Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ наследник QWidget

Автор: mas_nix 16.9.2008, 10:26

Создпется графическмй компонент, В качестве родительского комнонента был выбран 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

Цитата(mas_nix @ 16.9.2008, 11:26) *
painEvent
Нужно быть внимательней не painEvent, а paintEvent! :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)