我想在某些信号上启用和禁用QTableView小部件的编辑。我可以通过以下方式禁用它:

table->setEditTriggers(QAbstractItemView::NoEditTriggers);

但是如何重新打开呢?

最佳答案

如果打印editTriggers:

qDebug()<< table->editTriggers();

获得:
QFlags<QAbstractItemView::EditTriggers>(DoubleClicked|EditKeyPressed|AnyKeyPressed)

因此可以假定默认状态为:
QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed | QAbstractItemView::AnyKeyPressed

或更简单的解决方案是将状态开头保存为类的成员:

* .h
// ...
private:
    QAbstractItemView::EditTriggers default_trigger;

* .cpp
// constructor
default_trigger = table->editTriggers();

然后在函数中使用:
if(table->editTriggers() == QAbstractItemView::NoEditTriggers)
    table->setEditTriggers(default_trigger);
else
    table->setEditTriggers(QAbstractItemView::NoEditTriggers);

09-09 20:03