Russian Qt Forum
Ноябрь 23, 2024, 22:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
И снова рисование
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: И снова рисование (Прочитано 3018 раз)
romanoff346
Гость
И снова рисование
«
:
Февраль 03, 2012, 13:43 »
Пытаюсь сделать рисование графика форма представляет собой следующее, QWidget кнопка и QFrame, который называется "graphicsView". Пытаюсь сделать так, чтобы по нажатию кнопки на фрейме что-нибудь отрисовывалось. Смотрел в бланшет и в форуме, все дружно рисуют на основном окне, а я хочу, чтоб отображение графика было в чётко ограниченной зоне.
заголовочник:
#ifndef FROMCURVEWINDOW_H
#define FROMCURVEWINDOW_H
#include <QDialog>
#include<QPixmap>
#include<QPainter>
#include "ui_FromCurve.h"
class FromCurveWindow : public QDialog, public Ui::FromCurve
{
Q_OBJECT
public:
FromCurveWindow(QWidget *parent = 0);
public slots:
void draw_curve();
private:
void refreshPixmap();
QPainter painter();
};
#endif // FROMCURVEWINDOW_H
и собсно сипипи:
#include <QtGui>
#include<QGraphicsView>
#include<QDialog>
#include<QVector>
#include"math.h"
#include "FromCurveWindow.h"
using namespace std;
FromCurveWindow::FromCurveWindow(QWidget *parent)
:QDialog(parent)
{
setupUi(this);
graphicsView->installEventFilter(this);
connect(acceptButton,SIGNAL(clicked()),this, SLOT(draw_curve()));
}
void FromCurveWindow::draw_curve()
{
QPainter painter(graphicsView);
painter.begin(graphicsView);
painter.setPen(Qt::black);
painter.setFont(QFont("Arial", 100));
painter.drawText(rect(), Qt::AlignCenter, "Qt");
painter.end();
graphicsView->update();
}
Этот код выдаёт следующее:
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setPen: Painter not active
QPainter::setFont: Painter not active
QPainter::end: Painter not active, aborted
Девайс вроде как указан как graphicsView.
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: И снова рисование
«
Ответ #1 :
Февраль 03, 2012, 14:02 »
Во-первых, рисовать QPainter-ом на виджете позволительно только из QWidget::paintEvent().
Во-вторых, не мешало бы для начала прочитать
Каркас Графического представления
, чтобы не заниматься рукоблудием.
Записан
Qt 5.11/4.8.7 (X11/Win)
romanoff346
Гость
Re: И снова рисование
«
Ответ #2 :
Февраль 03, 2012, 14:06 »
Ушёл читать...
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...