Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Inhibitor от Январь 14, 2016, 10:10



Название: ##РЕШЕНО## Каков алгоритм действий?
Отправлено: Inhibitor от Январь 14, 2016, 10:10
Добрый день.

Ситуация примерно такова: есть форма на которой расположено несколько пар "QSpinBox - QPushButton". Предполагалось что сначала пользователь вводит значение через QSpinBox, а потом по нажатию соответствующей QPushButton сохраняет значение в приложении. Однако, после тестирования, пользователь изъявил желание сохранять значение из QSpinBox по нажатию кнопки "Enter". Но и кнопки было решено оставить.

Подскажите, какой порядок действий должен быть, чтобы приложение корректно отрабатывало и по нажатию "Enter" и по нажатию QPushButton?


Название: Re: Каков алгоритм действий?
Отправлено: gil9red от Январь 14, 2016, 10:54
Например, создаете свой spinbox и переопределяете событие keyRelease, там проверяете key() на константу
Код
Python
class SpinBox(QSpinBox):
   def keyReleaseEvent(self, event):
       super().keyReleaseEvent(event)
 
       if event.key() == Qt.Key_Return:
           print('Enter')
 

Другой способ, использование фильтра -- eventFilter, тогда не придется создавать свой spinbox

Тут подробнее по вашей теме: http://doc.qt.io/qt-4.8/eventsandfilters.html


Название: Re: Каков алгоритм действий?
Отправлено: Bepec от Январь 14, 2016, 11:01
Зацепить всё на один слот.
Сигнал от кнопки и сигнал от spinEdit.


Название: Re: Каков алгоритм действий?
Отправлено: gil9red от Январь 14, 2016, 11:46
Зацепить всё на один слот.
Сигнал от кнопки и сигнал от spinEdit.

И вправду ))
Не посмотрел в асбтрактном спинбоксе сигнал editingFinished()


Название: Re: Каков алгоритм действий?
Отправлено: Inhibitor от Январь 14, 2016, 16:28
 Bepec, gil9red, спасибо большое!