Название: QGraphicsView + QGraphicsScene
Отправлено: taifun от Март 14, 2012, 13:08
Добрый день! Проблема вот в чем: объекту класса QGraphicsScene в цикле добовляю ряд эллипсов через секунду и хочу, что бы они отображались в экземпляре класса QGraphicsView по мере добавления в QGraphicsScene. В чем проблема и где почитать? М. Шлее, http://doc.crossplatform.ru/qt/4.5.0/graphicsview.html (http://doc.crossplatform.ru/qt/4.5.0/graphicsview.html) почитал (может плохо читал?) C++ (Qt) MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->pb_start, SIGNAL(clicked()), this, SLOT(drawObject())); scene = new QGraphicsScene(); ui->graphicsView->setScene(scene); } MainWindow::~MainWindow() { delete ui; } void MainWindow::drawObject() { unsigned short int stp_x = 0; unsigned short int stp_y = 0; for(int _object = 0; _object < 5; _object++){ qDebug() << "Paint " << _object + 1 << " object"; scene->addEllipse(stp_x + _object * 10, 10, 10, 10); //scene->update(stp_x + _object * 10, 10, 10, 10); //ui->graphicsView->update(); sleep(1); } }
Название: Re: QGraphicsView + QGraphicsScene
Отправлено: V1KT0P от Март 14, 2012, 13:11
Добрый день! Проблема вот в чем: объекту класса QGraphicsScene в цикле добовляю ряд эллипсов через секунду и хочу, что бы они отображались в экземпляре класса QGraphicsView по мере добавления в QGraphicsScene. В чем проблема и где почитать? М. Шлее, http://doc.crossplatform.ru/qt/4.5.0/graphicsview.html (http://doc.crossplatform.ru/qt/4.5.0/graphicsview.html) почитал (может плохо читал?) C++ (Qt) MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->pb_start, SIGNAL(clicked()), this, SLOT(drawObject())); scene = new QGraphicsScene(); ui->graphicsView->setScene(scene); } MainWindow::~MainWindow() { delete ui; } void MainWindow::drawObject() { unsigned short int stp_x = 0; unsigned short int stp_y = 0; for(int _object = 0; _object < 5; _object++){ qDebug() << "Paint " << _object + 1 << " object"; scene->addEllipse(stp_x + _object * 10, 10, 10, 10); //scene->update(stp_x + _object * 10, 10, 10, 10); //ui->graphicsView->update(); sleep(1); } }
Так ты же выполняешь функцию в главном потоке и пока она не завершится ничего отрисовываться не будет. Запускай таймер соединяй со слотом и в слоте добавляй эллипс. Как только будет добавлено достаточно эллипсов останавливай таймер.
|