2013-05-24 3 views
0

У меня есть элемент управления QListWidget, для которого у меня есть слот для сигнала selectionChanged. Список настроен для многократного выбора. Слот вызывается, когда кнопка мыши пока пользователь не перетаскивает, чтобы выбрать несколько элементов.Я не хочу обрабатывать изменения до тех пор, пока не будет отпущена кнопка мыши. То, что мне действительно нужно, - это какой-то сигнал редактирования, но не обязательно тот, который требует сосредоточения внимания на контроль теряется. вы можете дать этому новичку некоторые рекомендации, пожалуйста?Есть ли сигнал «Редактирование завершен» для QListWidget?

ответ

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 или все, что вы пытаетесь сделать.

Надеюсь, что это поможет.