【问题标题】:QTableWidget edit only one column and leave the rest non-editableQTableWidget 仅编辑一列,其余不可编辑
【发布时间】:2013-09-30 04:37:19
【问题描述】:

在 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) 即可完成上述所有操作,然后在需要时将列设置为可编辑。

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

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

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

【问题讨论】:

    标签: qt qt4 qtablewidget qtablewidgetitem


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-06
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多