Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Подсказка QToolTip


Автор: loneybibi 25.11.2012, 00:14
Создаю подсказку QToolTip, задаю текст и позицию.
Код вот такой:
Код

QRect r;
r.setSize(QSize(100,100));

QPoint p=pos()+ui->toolButton->pos();

QToolTip::showText(p,"<b>My tool tip</b><p>This is a my test tool tip</p>",
                               ui->toolButton,r);

Подсказка показывается определенное время. Как установить свое время
видимости, возможно ли это? Так же устанавливаю QRect но он почему
то не работает или я что то не так делаю? Подскажите пожалуйста! smile

Автор: devfom 25.11.2012, 17:44
Цитата(loneybibi @ 25.11.2012,  00:14)
Подсказка показывается определенное время. Как установить свое время
видимости, возможно ли это?

Свое время установить возможно, но этот процесс не совсем тривиальный. По умолчанию значение таймаута - 10 секунд.
Установить свою длительность можно 2 способами:
  •  Переопределить поведение QToolTipEvent, более подробно можно посмотреть http://developer.qt.nokia.com/faq/answer/how_can_i_change_the_timeout_period_for_a_qtooltip . Используйте данный метод, если хотите показывать тултип меньше стандартного времени, например, 5 секунд.
  •  Переопределить эвент, но показывать тултипы не используя класс QToolTip, и реализовывая свою логику отрисовки и т.п.

С QRect не совсем понял, что Вы хотели с ним сделать?

Автор: loneybibi 25.11.2012, 21:46
Цитата(devfom @ 25.11.2012,  16:44)
Цитата(loneybibi @ 25.11.2012,  00:14)
Подсказка показывается определенное время. Как установить свое время
видимости, возможно ли это?

Свое время установить возможно, но этот процесс не совсем тривиальный. По умолчанию значение таймаута - 10 секунд.
Установить свою длительность можно 2 способами:

  •  Переопределить поведение QToolTipEvent, более подробно можно посмотреть http://developer.qt.nokia.com/faq/answer/how_can_i_change_the_timeout_period_for_a_qtooltip . Используйте данный метод, если хотите показывать тултип меньше стандартного времени, например, 5 секунд.
  •  Переопределить эвент, но показывать тултипы не используя класс QToolTip, и реализовывая свою логику отрисовки и т.п.

С QRect не совсем понял, что Вы хотели с ним сделать?

Спасибо! Я так понял все от ОС зависит .. используется ее метод показа подсказок. 
Про QRect я имел ввиду что через него меняю размер подсказки а он не меняется. 

Автор: devfom 26.11.2012, 01:34
Нельзя изменить размер тултипа, в текущем API, в том числе используя QSS свойства width; height;
Из документации http://doc.qt.digia.com/qt/qtooltip.html#showText
Цитата

If you specify a non-empty rect the tip will be hidden as soon as you move your cursor out of this area.
Если Вы задаете не пустой прямоугольник rect, то тултип будет скрыт, как только курсор покинет границы данного прямоугольника.

Но, можно использовать один хак: так как Qt позволяет использовать в QToolTip RichText, никто не мешает запихать в него HTML таблицу нужной ширины, и показывать нужные данные в строке, например:
Код

<html>
<body>
<table width="200">
  <tr>
    <th>Your text goes here</th>    
  </tr>
</table>
</body>
</html>

создаст таблицу шириной 200px с 1 строкой.
Таким образом можно варьировать ширину тултипа.

Автор: loneybibi 26.11.2012, 03:24
Спасибо smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)