QTableWidget只编辑一列,其余列不可编辑

Mut*_*thu 2 qt qt4 qtablewidget qtablewidgetitem

在QT 4.7中,我试图在QTableWidget中编辑一个QTableWidgetItem,其余的所有列都应该只为我读取.我在这里遇到问题.

我通过谷歌和stackoverflow检查了一些样本,但未能实现这一点.我尝试的一些选项是,

我通过调用insertRow(rownumber)来添加行来创建行.

  1. 试用版1:我在动态插入行时执行以下操作

    • 在UI对话框中启用编辑触发器
    • 使用以下代码添加列以禁用编辑

      QTableWidgetItem qit(""); qit.setflags(qit.flags() & ~Qt::ItemIsEditable) qtable.setitem(row,column, &qit);

    • 而对于其他列,我没有设置标志

    上述方法无效.我可以编辑所有列(甚至是我否定了可编辑选项的列)

  2. 试用2:完成以上所有操作qtable.setEditTriggers(Qt::NoEditTriggers),然后在需要的地方将列设置为可编辑.

    但是此选项会使所有列都不可编辑.

但我没有看到任何人在任何论坛上抱怨这样的人.所以我一定是犯了一些愚蠢的错误.

有人遇到这样的问题,如果是,请通过回答帮助.

fbu*_*cek 10

QTableWidget的工作示例

添加行中的第一项是可编辑的,第二项是不可编辑的.

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // Prepare layout
    QMainWindow *window = new QMainWindow;
    QTableWidget *tablewidget = new QTableWidget;
    window->setCentralWidget(tablewidget);

    // Add data
    tablewidget->insertRow(0);
    tablewidget->insertColumn(0);
    tablewidget->insertColumn(1);

    QTableWidgetItem *item;
    item = new QTableWidgetItem("editable");
    tablewidget->setItem(0,0,item);

    item = new QTableWidgetItem("non editable");
    item->setFlags(item->flags() & ~Qt::ItemIsEditable); // non editable
    tablewidget->setItem(0,1,item);

    window->show();
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)