Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: кнопка "?" - what's this
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
quarz
Все знают кнопку "?" в заголовке окна, которая запускает режим What's this.
Я хочу при нажатии на нее показывать окно с инфой о программе (для маленьких приложений, состоящих из одной формы и без меню это бывает очень нужно).
Нажатие на кнопку я научился перехватывать через событие QEvent::QueryWhatsThis. А вот режим What's this, в котором меняется указатель мыши и ждет клика на какой-нить элемент формы, у меня отключить не получается.
Есть способы это сделать?

P.S. нашел интересный атрибут у виджетов WA_CustomWhatsThis: Indicates that the widget wants to continue operating normally in "What's This?" mode.
По умолчанию он отключен, включение ничего не меняет. И как-то подозрительно мало в инетрнете об этом написано.

Еще нашел класс QWhatsThis, у которого есть статические методы enterWhatsThisMode(), leaveWhatsThisMode() и inWhatsThisMode().
При нажатии на кнопку "?" я в обработчике события вижу, что происходит вход в режим WhatsThis. Но программный выход из режима тоже ничего не меняет.
Курсор по-прежнему остается Qt::WhatsThisCursor и ждет клика по контролу :(
quarz
тогда спрошу иначе:

почему никто не использует кнопку "?" для отображения окна "О программе", это же удобно? На всех форумах спрашивают только как ее скрыть.
Или я что-то не понимаю в интерфейсах?
quarz
Разобрался :)
Режим WhatsThis при включении инициирует событие QEvent::EnterWhatsThisMode, в его обработчике и надо выключать режим.
Часть кода для минимального примера:
Раскрывающийся текст
bool aboutTest::event(QEvent *mEvent)
{  
    if(mEvent->type() == QEvent::EnterWhatsThisMode)    //не даем войти в режим WhatsThis
        QWhatsThis::leaveWhatsThisMode();
    else if (mEvent->type()==QEvent::QueryWhatsThis)    //при нажатии на "?" показываем окно "О программе"
    {
        about();
    }
    return QMainWindow::event(mEvent);
}

void aboutTest::about()
{
    QMessageBox::about(this, tr("About Icons"),
            tr("The <b>Icons</b> example illustrates how Qt renders an icon in "
               "different modes (active, normal, disabled, and selected) and "
               "states (on and off) based on a set of images."));
}

А вопрос о целесообразности такого применения остается
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.