我显示一个弹出式菜单来选择在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 ++我想更换无用NULL。

您可能能够使用QTableWidget.closePersistentEditor()来关闭编辑器。然而,QAbstractItemView.closeEditor()可能会接近你想要的东西,特别是因为你似乎是舒适与基于QModelIndex的API,并且已经使用自定义编辑器部件。

我无法为列表控件说话。但是,我来到这里试图做类似的事情。

我是双击一个小区,并且基于列,带来了一个子形式的列表,然后当其被关闭移动到基于所选择的值的下一个相应的列。

我的问题是,我可以在细胞中获得的价值和“选择”下一个适当的细胞,但原始细胞在编辑模式下选择留了下来!

据终于醒悟过来了,我双击了选择的细胞,即。编辑。

一个单点击选择该小区,但不打开的编辑模式。

边注:绝不能拿该子表格行事真正模式,所以我创建在调用形式的循环:当子表单是可见,唯一的代码是app.processEvents()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top