0

我有一个QListWidget控件,我有一个信号槽selectionChanged。该列表配置为多选。当用户拖动以选择多个项目时,当鼠标按钮仍然按下时,插槽被调用。在释放鼠标按钮之前,我不想处理更改。我真正需要的是某种 Editing Finished 信号,尽管不一定需要失去对控制的关注。请给这个新手一些指导好吗?

4

1 回答 1

0

http://doc.qt.io/qt-4.8/qlistwidget.html#signals

http://doc.qt.io/qt-4.8/qfocusevent.html

http://doc.qt.io/qt-4.8/qmouseevent.html

http://doc.qt.io/qt-4.8/qtimerevent.html

使用上述事件的某种组合,或者已经内置到你的信号中QListWidget,去启动一个“完成编辑计时器”。当再次单击或编辑时,重置计时器。在计时器超时时,进行计算或过滤。

例如:

subclass QListWidget.

initialize the timer (singleshot, set at 750 ms or so)

itemSelectionChanged => start the timer

mousePressEvent => stop the timer

mouseReleaseEvent => start the timer

keyPressEvent => (shift),(ctrl), or (arrows) => stop the timer
keyReleaseEvent => (all keys released) => start the timer

focusOutEvent => start the timer

focusInEvent => stop the timer

connect the timer's timeout signal to a custom signal `myEditingFinished`

在你的之外QListWidget,连接到它的myEditingFinished信号runDatabaseQuery或你想要做的任何事情。

希望有帮助。

于 2013-05-24T23:52:24.680 回答