Модератор: Модераторы разделов
-
frp
- Сообщения: 1445
- ОС: Debian Squeeze
Сообщение
frp »
Код: Выделить всё
class gw : public QGLWidget
{
Q_OBJECT
public:
QPixmap pm;
int ang;
gw ( QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WindowFlags f = 0 )
: QGLWidget (parent,shareWidget,f)
{}
protected:
void paintEvent(QPaintEvent* e);
};
void gw::paintEvent(QPaintEvent *e)
{
QPainter p;
p.begin(this);
p.translate(pm.width()/2,pm.height()/2);
p.rotate(ang);
p.translate(-pm.width()/2,-pm.height()/2);
p.drawPixmap(0,0,pm);
p.end();
}
Не работает. Отображается пустой экран. В чем проблема?
-
Crazy
- Сообщения: 862
- Статус: Адепт Дзен.
- ОС: Mint, Win7.
Сообщение
Crazy »
Вроде требуется перезапись initializeGL(), resizeGL(), paintGL().
Твой объект p удаляется после выхода из paintEvent().
Desipere in loco
-
frp
- Сообщения: 1445
- ОС: Debian Squeeze
Сообщение
frp »
Crazy писал(а): ↑04.04.2010 00:59
Твой объект p удаляется после выхода из paintEvent().
Зачем painter хранить после завершения рисования?
Проблему решил - ошибка возникала в куске кода, инициализировавшего pm. В результате pm получался пустым.