Qtableview中的QStandardItemModel

时间:2013-06-05 04:27:43

标签: qt qtableview qstandarditemmodel

我在QStandardItemModel内使用QTableView。在这里,我有两个按钮&我的主窗口内Qtableview。 我这里只需要4列。行会有所不同。这两个按钮将用于添加/删除行(测试用例)。

  1. setHorizontalHeaderItem未显示所有文字(表示所有文字均不可见)。示例如果我放'Text for the Employee Name'它不完全可见?
  2. 如何让QStandardItemModel占据QTableviewwidth)。目前它显示在左上角?
  3. 如何实现它?

    代码:

    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);
            }
        }
    
        model->setHorizontalHeaderItem(0, new QStandardItem(tr("Time")));
        model->setHorizontalHeaderItem(1, new QStandardItem(tr("Text for the Employee Name")));
        model->setHorizontalHeaderItem(2, new QStandardItem(tr("Text for the Employee Address")));
        model->setHorizontalHeaderItem(3, new QStandardItem(tr("Text for the Employee Date of Birth")));
    
        model->setVerticalHeaderItem(0, new QStandardItem(tr("Test-Case-----1")));
    

    enter image description here

3 个答案:

答案 0 :(得分:3)

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

tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);

答案 1 :(得分:1)

由于答案已经接受了问题,我的答案可能会对某人有所帮助,因为上面接受的答案对我没有帮助。

QStandardItemModel *model = new QStandardItemModel(2,3,this);
//----------
ui->tableView->setModel(model);
ui->tableView->resizeColumnsToContents();

答案 2 :(得分:0)

我知道答案有点晚了,但我只需要做同样的事情,并想出一个不同的解决方案。

要在Qt 4中实现目标,您需要调整sub_df <- x_data[[some_string]] 标题的设置。为此,首先检索标题:

QTableView

接下来,通过调用QHeaderView::setResizeMode(第二种味道,接受QHeaderView *header = ui->tableView->horizontalHeader(); )来调整各列的调整大小模式:

logicalIndex

在上面的示例中,我选择拉伸第3列,但您可以选择任何列处于“拉伸”模式。

在Qt 5中,您想要的电话是QHeaderView::setSectionResizeMode()

希望这有助于您或其他任何人寻求解决此问题的方法。