crossplatform.ru

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


  Ответ в QPainter во вложенном Widget'e
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
igor_bogomolov Дата 21.5.2009, 20:20
  В designer-e нажми по размещенному виджету(QWidget) правой кнопкой мыши. Выбери пункт Promote to.... В promoted class name введи название класса, например, MyWidget.
В проекте создаешь два файла mywidget.h и mywidget.cpp (не забываем добавить их в .pro)

mywidget.h
#include <QtGui/QWidget>
class QPaintEvent;

class MyWidget : public QWidget
{
    Q_OBJECT
public:
    MyWidget(QWidget *parent = 0);
protected:
    void paintEvent(QPaintEvent *event);
};
mywidget.cpp
#include <QtGui/QPaintEvent>
#include "mywidget.h"

MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
}

void MyWidget:: paintEvent(QPaintEvent *event)
{
        QPainter painter(this);
        painter.setPen(Qt::blue);
        painter.setBrush(QBrush(Qt::red));
        painter.draw.....
}


Стратегия думаю понятна. Почитай Бланшет, в инете есть в электронке.
gmurik2 Дата 21.5.2009, 19:51
  в консоль выводит это:

QPainter::begin: Widget painting can only begin as a result of a paintEvent
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::setWindow: Painter not active
SABROG Дата 21.5.2009, 14:47
  А в консоль ошибки не сыпятся о том, что рисовать на чужой виджет нельзя?
gmurik2 Дата 21.5.2009, 14:42
  Помогите разобраться с QPainter! Начальные условия: есть некая форма, созданная в Designere, в которой есть widget Widget. Теперь я хочу что-нибудь нарисовыть, но безуспешно...

CODE
class reports : public QDialog {
Q_OBJECT
Q_DISABLE_COPY(reports)
public:
explicit reports(QWidget *parent = 0);
virtual ~reports();

protected:
virtual void changeEvent(QEvent *e);
void paintEvent(QPaintEvent *event);


private:
Ui::reports *m_ui;
};


CODE
reports::reports(QWidget *parent) :
QDialog(parent),
m_ui(new Ui::reports)
{
m_ui->setupUi(this);
}

reports::~reports()
{
delete m_ui;
}

void reports::paintEvent(QPaintEvent *event) {
QPainter painter(m_ui->widget);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setWindow(-50,-50,100,100);
for(int i = 0; i < 12; i++) {
float fAngle = 2 * 3.1415 * i / 12;
int x = cos(fAngle) * 10;
int y = sin(fAngle) * 10;
QColor hourColor(255, 0, 127);
painter.setBrush(hourColor);
painter.drawPoint(x, y);
}
draw(&painter);
}


в чем ошибка?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 23:25