powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt Виджет, пользовательское взаимодействие с элементами которого было последним.
4 сообщений из 4, страница 1 из 1
Qt Виджет, пользовательское взаимодействие с элементами которого было последним.
    #38004450
Dymanovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Есть форма. на форме, среди прочего, есть 2 виджета. Внутри них - другие виджеты, кнопки, поля ввода и пр.
Требуется: если пользователь передал фокус, щёлкнул мышкой на 1-м виджете или элементах в него входящих - установить переменную в 0. А если на 2-м в 1. Как это сделать? Переопределять все компоненты через наследование, чтобы отловить эти события не хочется.

Если ли гуманный способ с, максимум, переопределением обработчиков событий формы. Цель - избавить пользователя от переключателя (чтобы сам переключался, а то пользователь может забывать) между отправкой на выполнение шага 1 и шага 2.

(Должны быть на 1-й форме, т.к. составляют одну задачу. Хотя интервал между выполнением шагов может быть от 3 секунд до недели (проверка резервного питания)).

Благодарю за советы.
...
Рейтинг: 0 / 0
Qt Виджет, пользовательское взаимодействие с элементами которого было последним.
    #38004532
Katamaran1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DymanovskyЗдравствуйте. Есть форма. на форме, среди прочего, есть 2 виджета. Внутри них - другие виджеты, кнопки, поля ввода и пр.
Требуется: если пользователь передал фокус, щёлкнул мышкой на 1-м виджете или элементах в него входящих - установить переменную в 0. А если на 2-м в 1. Как это сделать? Переопределять все компоненты через наследование, чтобы отловить эти события не хочется.

Если ли гуманный способ с, максимум, переопределением обработчиков событий формы. Цель - избавить пользователя от переключателя (чтобы сам переключался, а то пользователь может забывать) между отправкой на выполнение шага 1 и шага 2.

(Должны быть на 1-й форме, т.к. составляют одну задачу. Хотя интервал между выполнением шагов может быть от 3 секунд до недели (проверка резервного питания)).

Благодарю за советы.

void SmilesWidget::mousePressEvent(QMouseEvent* event)
{
QWidget* child = childAt(event->pos());
} вот оно. думаю смысл ясен.
...
Рейтинг: 0 / 0
Qt Виджет, пользовательское взаимодействие с элементами которого было последним.
    #38004586
Dymanovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const QPoint & QMouseEvent::pos () const
...
Рейтинг: 0 / 0
Qt Виджет, пользовательское взаимодействие с элементами которого было последним.
    #38005886
Dymanovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На StackOverFlow помогли:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
connect(dynamic_cast<QApplication*>(QCoreApplication::instance()), SIGNAL(focusChanged(QWidget*,QWidget*)), this, SLOT(application_focusChanged(QWidget*,QWidget*)) );


void FormBackupPower::application_focusChanged ( QWidget * old, QWidget * now ){
    const QWidget *widget = now;
    const QWidget *step1 = dynamic_cast<const QWidget*>(this->ui->groupBoxStep1);
    const QWidget *step2 = dynamic_cast<const QWidget*>(this->ui->groupBoxStep2);
    while (widget != NULL) {
        if (widget == step1) {
            this->setCurrentStep(FormBackupPower::currentStep_low);
            break;
        }
        if (widget == step2) {
            this->setCurrentStep(FormBackupPower::currentStep_low + 1);
            break;
        }
        widget = widget->parentWidget();
    }
}
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt Виджет, пользовательское взаимодействие с элементами которого было последним.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]