Russian Qt Forum
Февраля 24, 2025, 12:26
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Помогите с QApplication::focusWidget()!
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Помогите с QApplication::focusWidget()! (Прочитано 4132 раз)
FrodoNew
Гость
Помогите с QApplication::focusWidget()!
«
:
Декабря 03, 2009, 09:08 »
В общем, проблема такая: на главной форме есть 2 виджета - контейнера. На первом есть страницы-вкладки, на втором нет. Для первого виджета прописаны комбинации горячих клавиш, которые переключают вкладки. Проблема в том, что когда активен ВТОРОЙ виджет, при нажатии на горячие клавиши все равно срабатывает переключение вкладок. Была следующая задумка решения: когда срабатывает горячая клавиша, при запуске функции проверить, активен ли первый виджет-контейнер, если да - выполнить, нет - не выполнять.
Пошарился по форуму...
Все решения сводятся к работе с QApplication::focusWidget(), но на сию строку компилятов (MS VS 2005) ругается:
1>.\MainWidget.cpp(76) : error C2352: 'QApplication::focusWidget' : illegal call of non-static member function
1> D:\3.3.8\include\qapplication.h(132) : see declaration of 'QApplication::focusWidget'
Как исправить ошибку, или может проблему вообще как-то по-другому решить можно?
Записан
BRE
Гость
Re: Помогите с QApplication::focusWidget()!
«
Ответ #1 :
Декабря 03, 2009, 09:13 »
Цитата: FrodoNew от Декабря 03, 2009, 09:08
В общем, проблема такая: на главной форме есть 2 виджета - контейнера. На первом есть страницы-вкладки, на втором нет. Для первого виджета прописаны комбинации горячих клавиш, которые переключают вкладки. Проблема в том, что когда активен ВТОРОЙ виджет, при нажатии на горячие клавиши все равно срабатывает переключение вкладок. Была следующая задумка решения: когда срабатывает горячая клавиша, при запуске функции проверить, активен ли первый виджет-контейнер, если да - выполнить, нет - не выполнять.
Пошарился по форуму...
Все решения сводятся к работе с QApplication::focusWidget(), но на сию строку компилятов (MS VS 2005) ругается:
1>.\MainWidget.cpp(76) : error C2352: 'QApplication::focusWidget' : illegal call of non-static member function
1> D:\3.3.8\include\qapplication.h(132) : see declaration of 'QApplication::focusWidget'
Как исправить ошибку, или может проблему вообще как-то по-другому решить можно?
А ты как QApplication::ficusWidget используешь?
Записан
FrodoNew
Гость
Re: Помогите с QApplication::focusWidget()!
«
Ответ #2 :
Декабря 03, 2009, 09:22 »
Пробовал по разному:
и
if (QApplication::focusWidget()==this)
{
//Код выполнения
}
и через qApp
Но причина не в этом, если просто даже написать
QApplication::focusWidget();
То уже выдает ошибку...
Разумеется #include <qapplication.h> есть.
Просто забыл уточнить, класс, в котором обрабатывается эта функция, самописная, и дочерий напрямую от QObject, поэтому при сравнении if (QApplication::focusWidget()==this) он разумеется не сравнит QWidjet и мой класс...
Можно как-нибудь выкрутиться, или есть какие аналогичные функции?
Записан
spectre71
Гость
Re: Помогите с QApplication::focusWidget()!
«
Ответ #3 :
Декабря 03, 2009, 09:33 »
Цитата: FrodoNew от Декабря 03, 2009, 09:22
Просто забыл уточнить, класс, в котором обрабатывается эта функция, самописная, и дочерий напрямую от QObject, поэтому при сравнении if (QApplication::focusWidget()==this) он разумеется не сравнит QWidjet и мой класс...
Можно как-нибудь выкрутиться, или есть какие аналогичные функции?
Легко. Писать правильно, а не искать какие-то там функции.
И еще задавать такие вопрсы в разделе "Вопросы новичков"
Записан
BRE
Гость
Re: Помогите с QApplication::focusWidget()!
«
Ответ #4 :
Декабря 03, 2009, 09:36 »
В Qt3 QApplication::focusWidget не static метод, поэтому:
qApp->focusWidget.
Как твой класс-наследник от QObject может иметь фокус?
Записан
FrodoNew
Гость
Re: Помогите с QApplication::focusWidget()!
«
Ответ #5 :
Декабря 03, 2009, 09:43 »
сейчас попробую qApp->...
А насчет того, что мой класс имеет фокус, я не писал. Я говорю, что он содержит функции, которые обрабатываются при нажатии на горячие клавиши.
В конструктор класса передается объект parent типа QWidget. Менять структура класса мне нельзя...
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...