QStandardItemModel& QTableView中

时间:2013-05-17 07:01:35

标签: qt

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

请建议,

  1. 如何更改行和&列标题名称。目前显示1,2,3,4
  2. 如何使QStandardItemModel占用完整的Qtableview。目前它显示在左上角。

  3. 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);
    
    }
    

3 个答案:

答案 0 :(得分:4)

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

2&gt;像这样:

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

答案 1 :(得分: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-您可以将拉伸最后一部分设置为true。这样可确保每次调整表格本身时,最后一列都会拉伸以填充表格。

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

或者您可以设置所需的列,以便足够伸展以填充表格。为此,请确保将setStretchLastSection设置为false。

myView->horizontalHeader()->setStretchLastSection(false);
myView->horizontalHeader()->setResizeMode(yourDesiredCol, QHeaderView::Stretch);

答案 2 :(得分:0)

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

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

如果要显示的信息多于简单文本(如图标或彩色文本),则setVerticalHeaderItem非常有用。