gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:59:08 28 4
gpt4 key购买 nike

在 QT 4.7 中,我试图使 QTableWidgetItem 中的一个 QTableWidgetItem 可编辑,其余所有列对我来说应该是只读的。我这里有问题。

我已经通过 google 和 stackoverflow 检查了一些示例,但未能实现这一点。我尝试过的一些选项是,

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

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

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

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

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

    上述方法无效。我可以编辑所有列(甚至是我取消了可编辑选项的列)

  2. 试验 2:只需使用 qtable.setEditTriggers(Qt::NoEditTriggers) 即可完成上述所有操作,然后在需要时将列设置为可编辑。

    但此选项使所有列都不可编辑。

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

有没有人遇到过这样的问题,如果有请帮忙解答。

最佳答案

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

关于QTableWidget 只编辑一列,其余的不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19086536/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com