Название: Странности с QPixmap(?) Отправлено: joktar от Сентябрь 04, 2005, 07:44 Стоит такая задача:
есть класс, которому нужно рисовать на QPixmap,а этот QPixmap в сво ю очередь должен выводить другой класс. Только вот реально выводится QPixmap только под Qt 4.0.1/X11 а под Qt 4.0.1/Win32 OpenSource - нет. Рисование делаю так: #include "xxx_renderer.h" ... QPixmap pixmap(800,600); QPainter painter(&pixmap); ...//рисуем painter.end(); //указываем другому классу что рисовать //ui.renderer - объект класса xxx_renderer ui.renderer->setPixmap(pixmap); ... код renderer.h: #include <QtGui/QWidget> #include <QPixmap> #include <QtGui/QPaintEvent> #include <QPainter> #ifndef __XXX_RENDERER_H_ #define __XXX_RENDERER_H_ class xxx_renderer: public QWidget { Q_OBJECT public: xxx_renderer(QWidget * parent = 0): QWidget(parent) { } /*** * Деструктор класса рендера, * virtual так как есть планы от него наследоватся */ virtual ~xxx_renderer() { } Q_PROPERTY(QPixmap Image READ getPixmap WRITE setPixmap); /*** * Получение фоновой картинки * @returns - фоновую картинку */ QPixmap getPixmap() const { return pixmap; } /*** * Установка фоновой картинки * @newPixmap - новая картика */ void setPixmap(QPixmap newPixmap) { pixmap=newPixmap; repaint(); } /*** * Отрисовка нашего виджета - пока просто вывод картинки * @event - что отрисовывать(См QPaintEvent в Qt Assistant) */ void paintEvent(QPaintEvent *event ); protected: QPixmap pixmap; }; #endif реализация paintEvent(): #include "xxx_renderer.h" /*** * Отрисовка нашего виджета - пока просто вывод картинки * @event - что отрисовывать(См QPaintEvent в Qt Assistant) */ void xxx::paintEvent(QPaintEvent *event ) { QPainter painter; painter.begin(this); painter.drawPixmap(0,0,width(),height(),pixmap); QString title=QString("График:"); int string_width=painter.fontMetrics().width(title); //int string_height=painter.fontMetrics().height(); int start_x_position=10;//width()/2-string_width/2; int start_y_position=10; painter.drawText(start_x_position,start_y_position,title); } Под Win32 - выводится только надпись "График", под X11-все что было нарисовано на pixmap'е |