c++ - QTableview 属性

标签 c++ qt qtableview resizable

我需要自定义 QTableView 方面的帮助,我已经定义了一个 QTableView,如本示例所示,这是我在 Internet 上找到的:

model = new QStandardItemModel(2,3,this); //2 Rows and 3 Columns
model->setHorizontalHeaderItem(0, new QStandardItem(QString("ID")));
model->setHorizontalHeaderItem(1, new QStandardItem(QString("Name")));
model->setHorizontalHeaderItem(2, new QStandardItem(QString("Description")));
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableView->setModel(model);
  1. 如何分别为每一列定义大小,即使用百分比:
    我会得到第一列宽度的 10%,第二列宽度的 50%,第三列宽度的 40%。

  2. 当我运行程序并双击 QTableView 中的一行时,我可以更改单击的单元格的值,尽管我已经定义了一个 QTableView onDoubleclick 方法,我的意思是当你点击重命名文件时它突出显示文本以便你可以修改,我如何禁用它?

  3. 如何使列可调整大小,即可以通过拖动列边缘来调整大小。

最佳答案

首先:在setModel() 之后使用setColumnWidth() 方法。例如:

//...
ui->tableView->setModel(model);
double  ii = ui->tableView->columnWidth(0);

ui->tableView->setColumnWidth(1,0.4*ii);    
ui->tableView->setColumnWidth(2,0.5*ii);

第三:为此删除

ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

来自您的代码。

关于c++ - QTableview 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25830675/

相关文章:

c++ - 重载本地 lambda 函数

c++ - 编辑GBM源代码,C++部分代码

c++ - C/C++ 的 JIT 优化器

c++ - 我如何从类名中获取 QMetaObject?

c++ - QSortFilterProxyModel 过滤实时数据的问题

qt - 如何仅使用 CSS 在 Qt 中的 QTableView 的标题中对齐文本?

c++ - 如何强制调整 indexWidgets 的大小以适应 Qt5 QTableView 的单元格

c++ - 动态数组-读取

c++ - Lambda 捕获 QFile 对象

c++ - Qt5自定义LineEdit小部件(QLineEdit子类)私有(private)变量崩溃应用