Russian Qt Forum
Октябрь 01, 2024, 00:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по QToolTip  (Прочитано 4425 раз)
VAP
Гость
« : Май 04, 2009, 13:31 »

Доброго времени суток!
Возник вопрос, как убрать всплывающую подсказку с неактивных элементов?
Как мне казалось, это просто сделать через событие QEvent:

 if (evt->type() == QEvent::ToolTip) {
    if (cm_Box->currentText().contains("..")) {
        setToolTip();
        return true;
    }
 }
  return QWidget::event(evt);

  Уже в слоте setToolTip() вызываю setToolTip() для кнопки. Но так не срабатывает.

  А может можно определять как-то глобально отключение всплывающих подсказок с  неактивных элементов, даже если вызван setToolTip()?
  Заранее благодарен за помощь.
Записан
VAP
Гость
« Ответ #1 : Май 05, 2009, 18:59 »

 Разобрался сам.
 toopTip : QString
 Глобальное определение для всплывающих подсказок есть только для виджетов наследников 
 активных и неактивных окон:
 WA_AlwaysShowToolTips.
 By defoult, this property contains an empty string.
 Поэтому, выход такой: при выполнении условия, нужно ставить пустое содержимое:
 
 myButton->setToolTip(" ");  и всплывающей подсказки не будет.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Май 05, 2009, 19:41 »

Разобрался сам.
 toopTip : QString
 Глобальное определение для всплывающих подсказок есть только для виджетов наследников 
 активных и неактивных окон:
 WA_AlwaysShowToolTips.
 By defoult, this property contains an empty string.
 Поэтому, выход такой: при выполнении условия, нужно ставить пустое содержимое:
 
 myButton->setToolTip(" ");  и всплывающей подсказки не будет.

myButton->setToolTip(QString());

Мне тоже как раз сейчас понадобилось отключать глобально, сделал это через глобальный фильтр событий:

Код
C++ (Qt)
MainObj::MainObj() : QWidget()
{
   setAttribute(Qt::WA_AlwaysShowToolTips, true);
 
   ...
 
   // флаг
   showTooltips = true;
 
   QApplication::instance()->installEventFilter(this);
}
 
bool MainObj::eventFilter(QObject *watch, QEvent *event)
{
   // показывать подсказки везде или нет
   if(event->type() == QEvent::ToolTip && !showTooltips)
   {
       event->ignore();
       return true;
   }
 
   return QObject::eventFilter(watch, event);
}
 
« Последнее редактирование: Май 05, 2009, 20:08 от AX » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 20.