В продолжение темы "Компилируется, но не работает пример из документации по QPainter".
Теперь у меня есть класс, унаследованный от QWidget. И в нем не работает вывод надписи поверх виджета при QPainter painter(this):
void FindTableWidget::paintEvent(QPaintEvent *event)
{
QWidget::paintEvent(event);
if(overdrawMessage.length()>0)
{
QPainter painter(this);
painter.setPen( QApplication::palette().color(QPalette::ToolTipText) );
painter.setFont(QFont("Arial", 14));
painter.drawText(rect(), Qt::AlignCenter, overdrawMessage);
qDebug() << "Print overdraw message:" << overdrawMessage;
}
}
void FindTableWidget::setOverdrawMessage(const QString iOverdrawMessage)
{
overdrawMessage=iOverdrawMessage;
// Обновляется внешний вид виджета
update();
}
В логе я вижу, что 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."
А на экране ничего не изменится.