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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QWidget + toolbar [РЕШЕНО]  (Прочитано 3840 раз)
Alp
Гость
« : Май 06, 2010, 12:40 »

Хочу к виджету просмотра отрендеренных шрифтов прикрутить всплывающий тулбар (для включения-выключения отрисовки базовой линии, аскендера, дескендера и ещё пары метрик), появляющийся по enterEvent и пропадающий по leaveEvent
Мой виджет унаследован от QWidget, хранит внутри себя кэш отрендеренных картинок-шрифтов и умеет отображать несколько QLabel'ов, в которые эти картинки кладутся (сделано с целью не думать об изменении размера и ручной отрисовке - за меня все делает лайаут).
Теперь пытаюсь сделать:
Код
C++ (Qt)
QPreviewWidget::QPreviewWidget(QWidget* parent) :
       toolbar(new QToolBar(this))
...................
void QPreviewWidget::enterEvent(QEvent *e)
{
   QPoint toolbarPos(width() - toolbar->width() - 20, 0);
   toolbar->move(toolbarPos);
 
   toolbar->show();
   QWidget::enterEvent(e);
}
 
void QPreviewWidget::leaveEvent(QEvent *e)
{
   toolbar->hide();
 
   QWidget::leaveEvent(e);
}
 

Так вот этот тулбар рисуется под лейблами, на которые кладутся картинки.

Если у тулбара не делать предком именно этот виджет (toolbar(new QToolBar())), то возникает проблема с enterEvent и leaveEvent, поскольку когда курсор оказывается над тулбаром родитель получает leaveEvent и дальше начинает дискотека с морганием заголовком окна и появлением-пропаданием тублара. Если есть идеи как решить этот вопрос - с удовольствием их испробую, этот вариант ничем не хуже первого.
« Последнее редактирование: Май 06, 2010, 14:11 от alp » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Май 06, 2010, 13:04 »

QToolBar живёт нормальной жизнью только на QMainWindow.

toolbar->raise();
« Последнее редактирование: Май 06, 2010, 13:06 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Alp
Гость
« Ответ #2 : Май 06, 2010, 14:11 »

QToolBar живёт нормальной жизнью только на QMainWindow.

toolbar->raise();

Да хрен с ним, пусть живет плохо, главное, что бы жил! Я ему кнопочек цветных нарисую, что бы веселее жилось.
А вот вызов raise() спаси ситуацию кардинально! Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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