Russian Qt Forum
Ноябрь 23, 2024, 17:46
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Как определить кто нажал QToolButton на QToolBar?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как определить кто нажал QToolButton на QToolBar? (Прочитано 3748 раз)
once_again_abc
Гость
Как определить кто нажал QToolButton на QToolBar?
«
:
Август 17, 2011, 09:46 »
Есть QToolBar, на нем две кнопки типа QToolButton - создаются динамически.
Также создаются слоты для обеих кнопок на toggled сигнал.
Вопрос такой: как внтури слотов узнать что кнопка была нажата именно с помощью мыши или клавиатуры, а не программно (например через setChecked)?
Записан
Странник
Гость
Re: Как определить кто нажал QToolButton на QToolBar?
«
Ответ #1 :
Август 17, 2011, 10:04 »
сигнал toggled(bool) информирует об изменении свойства checked (пользователем или программно). о нажатии кнопки пользователем уведомляет сигнал clicked(bool). кстати, об этом написано в документации = )
Записан
once_again_abc
Гость
Re: Как определить кто нажал QToolButton на QToolBar?
«
Ответ #2 :
Август 17, 2011, 10:12 »
я хочу связать две кнопки так, что бы при нажатии одной - отключалась другая. при этом мне еще нужно иметь возможность отключать другую как обычно. т.е. мне нужно различать два события 1) програмное отключение кнопки и 2) нормальное отключение кнопки. и все это делать хочется в одном месте - в одном и том же слоте.
конечно, можно создать еще один слот одной кнопки и соединить его с сигналом clicked другой, но в данной ситуации мне это как раз и не нужно. задача определить в слоте на toggled, что кнопка была отжата программно или вручную/нормально. как это можно сделать средствами Qt?
я могу это сделать через WinAPI (например вычислив координаты курсора), но есть ли хороший способ у Qt?
Записан
once_again_abc
Гость
Re: Как определить кто нажал QToolButton на QToolBar?
«
Ответ #3 :
Август 17, 2011, 10:15 »
показываю свой говнокод, может так понятнее будет что мне желается:
void CommandBar::on_StartButton_Toggle( bool toggled ) {
if( toggled == true ) { // Start
m_pButtonPause->setEnabled( true );
} else { // Stop
if( m_pButtonPause->isChecked() ) {
m_forcedPauseOff = true;
m_pButtonPause->setChecked( false );
}
m_pButtonPause->setEnabled( false );
}
}
void CommandBar::on_PauseButton_Toggle( bool toggled ) {
if( toggled == true ) { // Paused
// do smth good
} else { // Continued if not automatically
if( m_forcedPauseOff == true )
m_forcedPauseOff = false;
else
// do smth bad
}
}
использую m_forcedPauseOff чтобы узнать каким образом была отжата кнопка.
Записан
surendil
Гость
Re: Как определить кто нажал QToolButton на QToolBar?
«
Ответ #4 :
Август 19, 2011, 10:40 »
Наверное, вам подойдёт
QButtonGroup
.
Записан
once_again_abc
Гость
Re: Как определить кто нажал QToolButton на QToolBar?
«
Ответ #5 :
Август 24, 2011, 10:16 »
Цитата: surendil от Август 19, 2011, 10:40
Наверное, вам подойдёт
QButtonGroup
.
Спасибо за подсказку!
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...