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

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

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

}
Записан
alexman
Гость
« Ответ #1 : Октябрь 26, 2010, 21:28 »

У вас объект класса MainWindow существует только до первой закрывающей скобки!
Записан
genix
Гость
« Ответ #2 : Октябрь 26, 2010, 21:39 »

А как мне вывести рисование в функцию?
Записан
pethead
Гость
« Ответ #3 : Октябрь 29, 2010, 06:27 »

мудреный код. посмотрите примеры из qt. я там все время ковыряюсь.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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