2013-05-17 7 views
3

Я новичок в qt Я использую QStandardItemModel внутри QTtableview.QStandardItemModel & Qtableview

Пожалуйста, укажите,

  1. Как изменить имена заголовков столбцов строки &. В настоящее время он показывает 1,2,3,4
  2. Как сделать QStandardItemModel занять полный Qtableview. В настоящее время он отображается в верхнем левом углу.


MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    model= new QStandardItemModel(4, 4); 
    for (int row = 0; row < 4; ++row) { 
     for (int column = 0; column < 4; ++column) { 
      QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column)); 
      model->setItem(row, column, item); 
     } 
    } 

    ui->tableView->setModel(model); 

} 

ответ

0

Используйте setHorizontalHeaderLabels() и setVerticalHeaderLabels() или setHorizontalHeaderItem() и setVerticalHeaderItem() методы.

Вертикальные заголовки - это имена столбцов, а горизонтальные заголовки - имена строк.

setVerticalHeaderItem полезен, если вы хотите отображать больше информации, чем простой текст (например, значок или цветной текст).

2

1>model->setHorizontalHeaderItem(0, new QStandardItem(tr("Time")));

2> Как это:

for (int row = 0; row < 4; ++row) 
{ 
    QList<QStandardItem *> rowData; 
    rowData << new QStandardItem(QString("row %1, column %2").arg(row).arg(0)) 
    rowData << new QStandardItem(QString("row %1, column %2").arg(row).arg(1)) 
    rowData << new QStandardItem(QString("row %1, column %2").arg(row).arg(2)) 
    rowData << new QStandardItem(QString("row %1, column %2").arg(row).arg(3)) 
    model->appendRow(rowData); 
} 
0

1- Там несколько способов ввода заголовков к просмотру. Мне нравится делать это так:

QStandardItem *infoItem = new QStandardItem("Info"); 
infoItem ->setFont(heading); 
infoItem ->setToolTip("Scene Object Name and Type"); 

QStandardItem *fileStatus = new QStandardItem(); 
fileStatus->setIcon(QIcon(":/icons/fileStatus")); 
fileStatus->setToolTip("File Status displayed by ..."); 

QStandardItem *fileDirectory = new QStandardItem(); 
fileDirectory->setIcon(QIcon(":/icons/directory")); 
fileDirectory->setToolTip("File directory"); 

m_model->setHorizontalHeaderItem(0, infoItem); 
m_model->setHorizontalHeaderItem(1, fileStatus); 
m_model->setHorizontalHeaderItem(2, fileDirectory); 

2- Вы можете либо установить для последней секции растяжения значение true. Это гарантирует, что ваш последний столбец будет заполнять таблицу каждый раз при изменении размера самой таблицы.

myView->horizontalHeader()->setStretchLastSection(true); 

или вы можете установить желаемые столбцы, чтобы растянуть достаточно, чтобы заполнить таблицу. Для этого установите для параметра setStretchLastSection значение false.

myView->horizontalHeader()->setStretchLastSection(false); 
myView->horizontalHeader()->setResizeMode(yourDesiredCol, QHeaderView::Stretch); 
Смежные вопросы