crossplatform.ru

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


  Ответ в наследник QWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ViGOur Дата 16.9.2008, 10:33
 
Цитата(mas_nix @ 16.9.2008, 11:26) *
painEvent
Нужно быть внимательней не painEvent, а paintEvent! :)
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() в экземпляре данного класса то отображается пустое окно, виджет не рисуется,
как сделать так, чтобы происходила его отрисовка?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 18:22