Russian Qt Forum
Ноябрь 26, 2024, 02:38
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Управление поведением кнопок
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Управление поведением кнопок (Прочитано 7026 раз)
lighting
Гость
Управление поведением кнопок
«
:
Сентябрь 30, 2010, 15:41 »
Есть некий внешний объект которым я управляю из программы. Логика управления как у выключателя - при нажатии посылается команда устройству, если оно его обработало кнопка вдавливается, если сновать нажать то посылается другая команда и в случае успеха кнопка выдавливается обратно. В случае-же если команда не обработана - кнопка свое состояние менять не должна.
Задача вроде-бы простая, но с помощью PushButton ее у меня решить не получается - пробовал и Checkable и setDown, в обоих случаях кнопка реагирует на нажатия немедленно. Можно конечно заменить кнопку на QLabel и обрабатывать событие нажатия мыши, но хотелось-бы всетаки сделать это через PushButton
Версия Qt 4.5
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Управление поведением кнопок
«
Ответ #1 :
Сентябрь 30, 2010, 15:47 »
QToolButton, QToolButton::setChecked()
Записан
Qt 5.11/4.8.7 (X11/Win)
lighting
Гость
Re: Управление поведением кнопок
«
Ответ #2 :
Сентябрь 30, 2010, 16:06 »
А можно поподробнее? Как заставить toolButton не нажиматься до тех пор пока не придет ответ от управляемого устройства? На события мышки она реагирует немедленно тут-же нажимаясь.
Записан
DOOMer
Чайник
Offline
Сообщений: 95
Re: Управление поведением кнопок
«
Ответ #3 :
Сентябрь 30, 2010, 17:13 »
А чем не устраивает простое блокирование/разблокирование кнопки при помощи метода setEnabled(false | true)? Вы же все равно как-то обрабатываете ответ от управляемого устройства, вот и можете при этом ещё и разблокировать кнопку.
Записан
Linux x86_64 && Qt 5.4.0 && Qt 4.8.6t && GCC 4.9.2
lighting
Гость
Re: Управление поведением кнопок
«
Ответ #4 :
Сентябрь 30, 2010, 23:08 »
Во-первых у Diasbled кнопки внешний вид другой, а во-вторых АФАИК такая кнопка события мыши не принимает.
Записан
DOOMer
Чайник
Offline
Сообщений: 95
Re: Управление поведением кнопок
«
Ответ #5 :
Сентябрь 30, 2010, 23:21 »
А вам разве не надо как раз таки НЕ принимать события мыши некоторое время?
Цитировать
Как заставить toolButton не нажиматься до тех пор
пока не придет ответ
от управляемого устройства?
Отправили сигнал устройству -- вдавили и задизаблили кнопку.
Получили ответ от устройства -- отдизаблили кнопкуи оставили её вдавленной (isChecked) если необходимо.
Записан
Linux x86_64 && Qt 5.4.0 && Qt 4.8.6t && GCC 4.9.2
lighting
Гость
Re: Управление поведением кнопок
«
Ответ #6 :
Октябрь 01, 2010, 08:42 »
В том-то и дело что сигнал отправляется по нажатию. В предлагаемом вам варианте либо сигнал отправить не удастся (кнопка задизаблена) либо при нажатии кнопка сразу вдавиться даже если первой командой в слоте будет pushButton.setEnabled(false) и уже потом она станет неактивной. Мне-же надо чтобы она вообще не нажималась, точнее чтобы от мышки она только события принимала, а все действия (нажатие, отжатие) только по ответу от управляемого устройства.
Видимо придется взять QLabel и нужную мне логику работы реализовывать вручную.
Записан
navrocky
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: Управление поведением кнопок
«
Ответ #7 :
Октябрь 03, 2010, 00:53 »
Не хорошо это блокировать нажатия кнопки, пользователь будет думать что у него мышь поломалась.
Но если тебе всё-таки эта идея нравится, можешь перехватить клики мыши по кнопке через installEventFilter и в саму кнопку их не пускать, соответственно она нажиматься сама не будет, тогда сможешь рулить ей через setChecked...
Записан
Гугль в помощь
lighting
Гость
Re: Управление поведением кнопок
«
Ответ #8 :
Октябрь 04, 2010, 08:51 »
Цитата: navrocky
Не хорошо это блокировать нажатия кнопки, пользователь будет думать что у него мышь поломалась.
В некоторых случаях это меньшее из зол, куда хуже будет если кнопка нажмется, оператор будет уверен что все нормально, а команда не пройдет.
За EventFilter спасибо, попробую.
Записан
navrocky
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: Управление поведением кнопок
«
Ответ #9 :
Октябрь 04, 2010, 09:56 »
Цитировать
В некоторых случаях это меньшее из зол, куда хуже будет если кнопка нажмется, оператор будет уверен что все нормально, а команда не пройдет.
Ну так отожми ее и кинь сообщение об ошибке, например, через QMessageBox.
Записан
Гугль в помощь
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...