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

QTableWidget仅编辑一列,其余列不可编辑,qt,qt4,qtablewidget,qtablewidgetitem,Qt,Qt4,Qtablewidget,Qtablewidgetitem,在Qt4.7中,我试图使QTableWidget中的一个QTableWidgetItem可编辑,其余的所有列对我来说都应该是只读的。我这里有问题 我已经通过谷歌和stackoverflow检查了一些样本,但没有做到这一点。我尝试过的一些选择是 我通过调用insertRow(rownumber)来创建行,以添加行 试用1:我在动态插入行时执行以下操作 在UI对话框中启用编辑触发器 使用以下禁用编辑的代码添加列 QTableWidgetItem qit(“”); setflags(qit.flag

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

我已经通过谷歌和stackoverflow检查了一些样本,但没有做到这一点。我尝试过的一些选择是

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

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

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

      QTableWidgetItem qit(“”);
      setflags(qit.flags()&~Qt::ItemIsEditable)
      setitem(行、列和qit)

    • 对于其他栏目,我不设置标志

    上述方法不起作用。我可以编辑所有列(即使是我取消可编辑选项的列)

  • 试验2: 只需使用
    qtable.setEditTriggers(Qt::NoEditTriggers)
    执行上述操作,然后根据需要将列设置为可编辑

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

  • #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();
    }
    
    但我在任何论坛上都没有看到有人这样抱怨。所以我一定是犯了一些愚蠢的错误


    如果有人遇到这样的问题,如果是,请回答

    的工作示例

    新增行第一项可编辑,第二项不可编辑

    #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();
    }
    
    #包括
    int main(int argc,char*argv[])
    {
    质量保证申请a(argc、argv);
    //准备布局
    QMainWindow*window=新的QMainWindow;
    QTableWidget*tablewidget=新的QTableWidget;
    窗口->设置中心Widget(tablewidget);
    //添加数据
    tablewidget->insertRow(0);
    tablewidget->insertColumn(0);
    tablewidget->insertColumn(1);
    QTableWidgetItem*项目;
    项目=新的QTableWidgetItem(“可编辑”);
    tablewidget->setItem(0,0,item);
    项目=新的QTableWidgetItem(“不可编辑”);
    item->setFlags(item->flags()&~Qt::ItemIsEditable);//不可编辑
    tablewidget->setItem(0,1,项);
    窗口->显示();
    返回a.exec();
    }