Доброй ночи.
Пытаюсь создать пользовательский виджет, содержащий сцену, путём наследования QWidget. Получился следующий код:
//DataWindow.h
#ifndef DIAGRAMWINDOW_H
#define DIAGRAMWINDOW_H
#include <QtGui>
#include "DataRegion.h"
class DataWindow : public QWidget
{
Q_OBJECT
public:
DataWindow(QWidget *parent = 0);
private:
QGraphicsScene *scene;
QGraphicsView *view;
DataRegion *region;
};
#endif // DIAGRAMWINDOW_H
//DataWindow.cpp
#include <QtGui>
#include "DataWindow.h"
#include "DataRegion.h"
DataWindow::DataWindow(QWidget *parent)
:QWidget(parent)
{
scene = new QGraphicsScene(0, 0, 600, 450);
view = new QGraphicsView();
view->setScene(scene);
region = new DataRegion;
scene->addItem(region);
//setCentralWidget(view);
}
//main.cpp
#include <QtGui>
#include "DataRegion.h"
#include "DataWindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
DataWindow *view = new DataWindow;
view->show();
return app.exec();
}
DataRegion - класс для создания перемещающихся по сцене прямоугольников. Но при запуске получаю пустое окно - http://dl.dropbox.com/u/13814019/empty.png
Если же виджет DataWindow создать путём определения подкласса QMainWindow и добавить в конструктор setCentralWidget(view), то всё отлично отображается - http://dl.dropbox.com/u/13814019/rec.png
А также работает если в main.cpp всё заменить на следующий код:
//main.cpp
#include <QtGui>
#include "DataRegion.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QGraphicsScene *scene = new QGraphicsScene(0, 0, 600, 450);
QGraphicsView *view = new QGraphicsView;
view->setScene(scene);
DataRegion *test = new DataRegion;
scene->addItem(test);
view->show();
return app.exec();
}
Помогите пожалуйста указанием недочетов при создании виджета DataWindow с наследованием от QWidget и попытке его отобразить.