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

3
在QT 4.7中,我试图使一个QTableWidget中的一个QTableWidgetItem可编辑,而其他所有列都应该对我只读。但是我在这里遇到了问题。
我通过Google和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)进行上述所有操作,然后在需要时将列设置为可编辑。 但是,此选项会使所有列均不可编辑。
但是我没有在任何论坛中看到有人抱怨这个问题。所以我一定犯了一些愚蠢的错误。
如果有人遇到过这样的问题,请帮忙回答。
1个回答

11

使用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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接