4

我是 qt 新手,我在 QTtableview 中使用 QStandardItemModel。

请建议,

  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);

}
4

3 回答 3

4

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);
}
于 2013-05-17T08:53:58.827 回答
2

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-您可以将最后一段拉伸设置为真。这将确保每次调整表格本身的大小时,最后一列都会延伸以填满表格。

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

或者您可以设置您想要的列以拉伸到足以填满表格。为此,请确保将 setStretchLastSection 设置为 false。

myView->horizontalHeader()->setStretchLastSection(false);
myView->horizontalHeader()->setResizeMode(yourDesiredCol, QHeaderView::Stretch);
于 2016-06-24T10:01:28.873 回答
0

使用 setHorizo​​ntalHeaderLabels() 和 setVerticalHeaderLabels() 或 setHorizo​​ntalHeaderItem() 和 setVerticalHeaderItem() 方法。

垂直标题是列名,水平标题是行名。

如果您想显示比简单文本(如图标或彩色文本)更多的信息,setVerticalHeaderItem 很有用。

于 2013-05-17T08:53:17.580 回答