首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qtableview中的QStandardItemModel

Qtableview中的QStandardItemModel
EN

Stack Overflow用户
提问于 2013-06-05 04:27:43
回答 3查看 4.7K关注 0票数 1

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

  1. setHorizontalHeaderItem没有显示所有文本(意味着所有文本都不可见)。例如,如果我放置'Text for the Employee Name',它不是完全可见的吗?
  2. 如何使QStandardItemModel占据完整的QTableview (width)。目前,它是显示在左上角?

如何实现这一目标?

代码:

代码语言:javascript
复制
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")));

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-05 06:04:13

代码语言:javascript
复制
tableView->horizontalHeader()->setStretchLastSection(true);

代码语言:javascript
复制
tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
票数 4
EN

Stack Overflow用户

发布于 2015-04-10 04:27:58

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

代码语言:javascript
复制
QStandardItemModel *model = new QStandardItemModel(2,3,this);
//----------
ui->tableView->setModel(model);
ui->tableView->resizeColumnsToContents();
票数 1
EN

Stack Overflow用户

发布于 2018-02-05 05:56:56

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

要实现Qt 4中的目标,您需要调整QTableView头部的设置。为此,首先检索标题:

代码语言:javascript
复制
QHeaderView *header = ui->tableView->horizontalHeader();

接下来,通过调用QHeaderView::setResizeMode (第二种口味,它接受logicalIndex)来调整各个列的调整大小模式:

代码语言:javascript
复制
header->setResizeMode(0, QHeaderView::ResizeToContents);
header->setResizeMode(1, QHeaderView::ResizeToContents);
header->setResizeMode(2, QHeaderView::ResizeToContents);
header->setResizeMode(3, QHeaderView::Stretch);

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

在Qt 5中,您想要的调用是QHeaderView::setSectionResizeMode()

希望这能帮助你或其他人寻求解决这个问题的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16931569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档