2013-05-17 73 views
3

我是新来的qt我在QTtableview内使用QStandardItemModel。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

使用setHorizo​​ntalHeaderLabels()和setVerticalHeaderLabels()或setHorizo​​ntalHeaderItem()和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);