我正在显示一个弹出菜单,用于在QTableWidget中选择一些值.最低项是"修改列表"条目,当我选择它时,应自动出现一个新窗口,QComboBox应该消失,单元格返回Qt :: DisplayRole状态.
现在Qt拥有所有那些不错的API调用,QTableWidget.edit()
而且QTableWidget.editItem()
,我真正想要的是一个QTableWidget.endEditing()
,最好不指定单元格的索引,尽管我可以使用这个调用得到它:
table.currentIndex()
...但我不知道我是否可以保证当前单元格始终是正在编辑的单元格.
是否有API来关闭这些编辑器?
QTableWidget从QWidget继承了19个公共插槽.其中一个是setDisabled(),它应该禁用该窗口小部件及其所有子窗口的输入事件.
我会尝试:
table.setDisabled( true ); table.setDisabled( false );
虽然你说它不适合你,但还有另一种方法:如果你不喜欢它(表格失去焦点,我相信),你可以尝试使用EditTriggers.例如:
table.setEditTriggers( QAbstractItemView::NoEditTriggers );
table.setCurrentItem(None)
对我有用。(如果您使用一些cellChanged / itemChanged插槽功能,请不要忘记阻塞信号。)
这是与PyQt。对于C ++,我认为将None替换为NULL。