我有一个QListWidget
控件,我有selectionChanged
信号的插槽。该列表配置为多选。当用户拖动以选择多个项目时,当鼠标按钮仍然按下时,将调用插槽。在释放鼠标按钮之前,我不想处理更改。我真正需要的是某种编辑完成信号,虽然不一定需要关注控制丢失。你能给这个新手一些指导吗?
答案 0 :(得分: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
或您正在尝试做的任何事情。
希望有所帮助。