Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: romanoff346 от Февраль 03, 2012, 13:43



Название: И снова рисование
Отправлено: 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.


Название: Re: И снова рисование
Отправлено: GreatSnake от Февраль 03, 2012, 14:02
Во-первых, рисовать QPainter-ом на виджете позволительно только из QWidget::paintEvent().
Во-вторых, не мешало бы для начала прочитать Каркас Графического представления (http://www.doc.crossplatform.ru/qt/4.7.x/graphicsview.html), чтобы не заниматься рукоблудием.


Название: Re: И снова рисование
Отправлено: romanoff346 от Февраль 03, 2012, 14:06
Ушёл читать...