一、QListWidget、QTableWidget和QTreeWidget
QTableWidget的item默认是可以编辑,其他两个的item默认是不可编辑。如果要将QTableWidget设置成不可编辑,可以使用
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
则tablewidget的所有item都是不可编辑的;
QListWidget和QTreeWidget默认是不可编辑的,如果想要将item变成可以编辑的,可以简单地将item设置成可以编辑的,如下所示
item = new QTreeWidgetItem(parent); item->setFlags(Qt::ItemIsEditable|item->flags());
则整个的该item是可以编辑的。如果只是想某一列可以编辑,其中一种方法是使用信号和槽。双击可编辑的方式;
treeWidget = new QTreeWidget; treeWidget->setColumnCount(2); 。 。 。 connect(treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(editFileFilter(QTreeWidgetItem*,int))); // slot void SettingsViewer::editFileFilter(QTreeWidgetItem *item, int column) { if (column == 0) item->setFlags(Qt::ItemIsEditable | item->flags()); else item->setFlags(item->flags() & ~(Qt::ItemIsEditable) ); }
如上所示自己编写一个slot,当双击的时候触发设置标记
问题及解决:
在重写QDialog的done函数的时候,忘记在函数的最后调用父类的done函数,导致窗口无法关闭;只能通过杀死进程的方式;QDialog::done(result);
原文:https://www.cnblogs.com/czwlinux/p/12357363.html