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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование на QTableView  (Прочитано 5073 раз)
0xFF
Гость
« : Май 04, 2011, 01:13 »

Доброго времени суток
В приложении есть таблица, которая портит внешний вид окна когда пустует) Хочется в момент пребывания ее в этом нежелательном состоянии написать поверх несколько строк текста.
В paintEvent рисовать не хотит, QPainter p(this) сыплет в дебаг следующее QPainter::begin: Paint device returned engine == 0, type: 1

Как на ней можно порисовать?
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


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

Цитировать
В приложении есть таблица
А что есть таблица?
У меня такая же задача. только у меня куча таблиц. Центральный виджет отнаследовал от QStackedWidget в который помещаю по мере надобности таблицы в виде QTableView + модель. Пока нет данных центральный виджет зарисовываю
Код:
void ProcessTable::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawTiledPixmap(rect(), QPixmap(":icons/logo1.xpm"));
}
Записан
0xFF
Гость
« Ответ #2 : Май 04, 2011, 12:40 »

Таблица представляет из себя QAbstractTableModel + QItemDelegate + QTableView

Приведенный вами код я использовал так:
Код
C++ (Qt)
class TableView : public QTableView
{
...
protected:
   void paintEvent(QPaintEvent *e);
 
};
 
void TableView::paintEvent(QPaintEvent *event)
{
   QPainter painter(this);
   painter.drawLine(0,0,50,50);
}
 
в итоге вместо линии получалось посмотреть в дебаге - QPainter::begin: Paint device returned engine == 0, type: 1
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Май 04, 2011, 12:55 »

Вся отрисовка в наследниках QAbstractScrollArea делается на вьюпорте.
Создайте свой вьюпорт через
Код
C++ (Qt)
void QAbstractScrollArea::setViewport ( QWidget * widget )
и уже в нём делайте отрисовку.
Только, имхо, через QStackedWidget, как советует juvf, проще будет.
« Последнее редактирование: Май 04, 2011, 12:58 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
0xFF
Гость
« Ответ #4 : Май 04, 2011, 13:42 »

Спасибо, рисовать обычно не приходится, но это уже не первый случаи когда я забываю о вьюпорте)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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