Russian Qt Forum
Ноябрь 05, 2024, 22:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: И снова рисование  (Прочитано 3007 раз)
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 Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 03, 2012, 14:02 »

Во-первых, рисовать QPainter-ом на виджете позволительно только из QWidget::paintEvent().
Во-вторых, не мешало бы для начала прочитать Каркас Графического представления, чтобы не заниматься рукоблудием.
Записан

Qt 5.11/4.8.7 (X11/Win)
romanoff346
Гость
« Ответ #2 : Февраль 03, 2012, 14:06 »

Ушёл читать...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.116 секунд. Запросов: 23.