Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: genix от Октябрь 26, 2010, 20:27



Название: рисование в graphicsView
Отправлено: genix от Октябрь 26, 2010, 20:27
Вопрос скорее общий...
Код ниже работает, когда вставлен в процедуры класса MainWindow.
Код:
    QGraphicsScene * scene = new QGraphicsScene;
    ui->graphicsView->setScene(scene);
    QPen bp(QColor(0,0,0,255));
    //bp.setStyle(Qt::DotLine);
    bp.setWidth(5);
    //scene->addLine(100,100,200,100,bp);

но вот это не работает:
Код:
void resist(int y) {
    QGraphicsScene * scene = new QGraphicsScene;
    MainWindow().ui->graphicsView->setScene(scene);
    QPen bp(QColor(0,0,0,255));
    //bp.setStyle(Qt::DotLine);
    bp.setWidth(5);
    scene->addLine(100,y,200,y,bp);

}
при
Код:
public:
    Ui::MainWindow *ui;
в заголовочном файле.
Просто ничего не рисует.

Вот весь код.

Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->verticalSlider->setMinimum(0);
    ui->verticalSlider_2->setMinimum(0);
    ui->verticalSlider->setMaximum(100);
    ui->verticalSlider_2->setMaximum(100);
    ui->label->setText("");
    ui->label_2->setText("");
    ui->label_3->setText("");
}



MainWindow::~MainWindow()
{
    delete ui;
}

void resist(int y) {
    QGraphicsScene * scene = new QGraphicsScene;
    MainWindow().ui->graphicsView->setScene(scene);
    QPen bp(QColor(0,0,0,255));
    //bp.setStyle(Qt::DotLine);
    bp.setWidth(5);
    scene->addLine(100,y,200,y,bp);

}

void MainWindow::on_pushButton_clicked()
{
    resist(200);
    QGraphicsScene * scene = new QGraphicsScene;
    ui->graphicsView->setScene(scene);
    QPen bp(QColor(0,0,0,255));
    //bp.setStyle(Qt::DotLine);
    bp.setWidth(5);
    //scene->addLine(100,100,200,100,bp);
    double one=ui->verticalSlider->value();
    double two=ui->verticalSlider_2->value();
    double res=0;
    if (ui->radioButton->isChecked()==true) {
        res = one + two;
    }
    if (ui->radioButton_2->isChecked()==true) {
        res = 1/one + 1/two;
    }
    QString sres = QString("Result: %1").arg(res);
    ui->label_3->setText(sres);
}

void MainWindow::on_radioButton_clicked()
{

}


Название: Re: рисование в graphicsView
Отправлено: alexman от Октябрь 26, 2010, 21:28
У вас объект класса MainWindow существует только до первой закрывающей скобки!


Название: Re: рисование в graphicsView
Отправлено: genix от Октябрь 26, 2010, 21:39
А как мне вывести рисование в функцию?


Название: Re: рисование в graphicsView
Отправлено: pethead от Октябрь 29, 2010, 06:27
мудреный код. посмотрите примеры из qt. я там все время ковыряюсь.