Название: QPainter::drawText() в paintEvent - выполнятся, но не рисуется Отправлено: xintrea от Март 12, 2016, 21:31 В продолжение темы "Компилируется, но не работает пример из документации по QPainter (http://www.prog.org.ru/topic_29918_0.html)".
Теперь у меня есть класс, унаследованный от QWidget. И в нем не работает вывод надписи поверх виджета при QPainter painter(this): Код: void FindTableWidget::paintEvent(QPaintEvent *event) В логе я вижу, что paintEvent() выполняется, я вижу сообщение вида: Код: Print overdraw message: My message однако поверх виджета ничего не пишется. Код: https://github.com/xintrea/mytetra_dev/commits/experimental Актуальный коммит: 7fb151b3b3122e26cfeafffeb7175d0a0ae16ee6 Действия для появления сообщения, которое не появляется: - Создать две ветки. - Нажать Tools - Find in base - В строке поиска написать белиберду - Установить переключатель "Entire base" на "Current branch" - Нажать кнопку поиска В логе будет сообщение: Код: 21:18:49 [DBG] Print overdraw message: "Search produced within one branch. Try to search the entire database." А на экране ничего не изменится. UPD: Даже в прямой реализации (без условий) ничего не выводится: Код: void FindTableWidget::paintEvent(QPaintEvent *event) Предупреждений никаких нет, просто ничего не выводится. Название: Re: QPainter::drawText() в paintEvent - выполнятся, но не рисуется Отправлено: VPS от Март 12, 2016, 22:33 Вы уберите ради интереса с виджета "QTableView" и посмотрите результат.
Название: Re: QPainter::drawText() в paintEvent - выполнятся, но не рисуется Отправлено: xintrea от Март 12, 2016, 23:17 Вы уберите ради интереса с виджета "QTableView" и посмотрите результат. Тваюждивизию. Я тогда не понимаю, почему при командах отрисовки после QWidget::paintEvent(event); строка не рисуется поверх виджетов? Название: Re: QPainter::drawText() в paintEvent - выполнятся, но не рисуется Отправлено: xintrea от Март 12, 2016, 23:28 Вы уберите ради интереса с виджета "QTableView" и посмотрите результат. Поигрался, и у меня создается впечатление, что в Qt нет вообще возможности рисовать поверх виджетов, входящих в текущий виджет. Как не крути, строка отрисовывается ПОД виджетами. Нафига тогда paintEvent нужен - неясно. Название: Re: QPainter::drawText() в paintEvent - выполнятся, но не рисуется Отправлено: gil9red от Март 13, 2016, 00:31 Честно, было лень ваш код качать и повторять эти шаги, написал аналог, который:
1. Создает виджет с рисованием 2. Помещает этот виджет на форму через компоновщики 3. Помещает этот виджет на QTableView и QTextEdit, указав их в качестве родителей Код
Код
Название: Re: QPainter::drawText() в paintEvent - выполнятся, но не рисуется Отправлено: Igors от Март 13, 2016, 06:00 Я тогда не понимаю, почему при командах отрисовки после QWidget::paintEvent(event); строка не рисуется поверх виджетов? Так рисуется viewport (баба его), он и перекроет. Надо вешаться на viewportEvent, или фильтром на viewport и там рисовать |