Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Alp от Май 06, 2010, 12:40



Название: QWidget + toolbar [РЕШЕНО]
Отправлено: 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 и дальше начинает дискотека с морганием заголовком окна и появлением-пропаданием тублара. Если есть идеи как решить этот вопрос - с удовольствием их испробую, этот вариант ничем не хуже первого.


Название: Re: QWidget + toolbar
Отправлено: GreatSnake от Май 06, 2010, 13:04
QToolBar живёт нормальной жизнью только на QMainWindow.

toolbar->raise();


Название: Re: QWidget + toolbar
Отправлено: Alp от Май 06, 2010, 14:11
QToolBar живёт нормальной жизнью только на QMainWindow.

toolbar->raise();

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