crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> наследник QWidget
mas_nix
  опции профиля:
сообщение 16.9.2008, 10:26
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 16.9.2008
Пользователь №: 293

Спасибо сказали: 0 раз(а)




Репутация:   0  


Создпется графическмй компонент, В качестве родительского комнонента был выбран QWidget.

painEvent() и draw() переопределены следующим образом:

CODE
void QGWidget::painEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing,true);

int side=qMin(width(),height());
painter.setViewport((width()-side)/2,(height()-side)/2,side,side);

painter.setWindow(0,0,50,50);
draw(&painter);
}

void QGWidget::draw(QPainter *painter)
{
QPen thickPen(palette().foreground(),1.5);
painter->setPen(thickPen);

QRadialGradient haloGradient(0,0,20,0,0);
haloGradient.setColorAt(0.0,Qt::lightGray);
haloGradient.setColorAt(0.8,Qt::darkGray);
haloGradient.setColorAt(0.9,Qt::white);
haloGradient.setColorAt(1.0,Qt::black);

painter->setBrush(haloGradient);
painter->drawRect(1,1,50,50);

painter->setPen(thickPen);
painter->drawText(0,25,"Label");

}


все компилируется , но если вызвать метод show() в экземпляре данного класса то отображается пустое окно, виджет не рисуется,
как сделать так, чтобы происходила его отрисовка?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 16.9.2008, 10:33
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(mas_nix @ 16.9.2008, 11:26) *
painEvent
Нужно быть внимательней не painEvent, а paintEvent! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2021, 5:30