QPainter во вложенном Widget'e |
Здравствуйте, гость ( Вход | Регистрация )
QPainter во вложенном Widget'e |
gmurik2 |
21.5.2009, 14:42
Сообщение
#1
|
Студент Группа: Участник Сообщений: 23 Регистрация: 21.5.2009 Пользователь №: 764 Спасибо сказали: 0 раз(а) Репутация: 0 |
Помогите разобраться с 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); } в чем ошибка? |
|
|
SABROG |
21.5.2009, 14:47
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
А в консоль ошибки не сыпятся о том, что рисовать на чужой виджет нельзя?
|
|
|
gmurik2 |
21.5.2009, 19:51
Сообщение
#3
|
Студент Группа: Участник Сообщений: 23 Регистрация: 21.5.2009 Пользователь №: 764 Спасибо сказали: 0 раз(а) Репутация: 0 |
в консоль выводит это:
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 |
|
|
igor_bogomolov |
21.5.2009, 20:20
Сообщение
#4
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
В designer-e нажми по размещенному виджету(QWidget) правой кнопкой мыши. Выбери пункт Promote to.... В promoted class name введи название класса, например, MyWidget.
В проекте создаешь два файла mywidget.h и mywidget.cpp (не забываем добавить их в .pro) mywidget.h
mywidget.cpp
Стратегия думаю понятна. Почитай Бланшет, в инете есть в электронке. |
|
|
Текстовая версия | Сейчас: 29.3.2024, 9:30 |