Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: DenKa от Май 05, 2007, 15:28



Название: проблема с setCentralWidget (QGraphicsView)
Отправлено: DenKa от Май 05, 2007, 15:28
Код:

QGraphicsScene scene;
//scene.setSceneRect(-300, -300, 600, 600);
scene.addText("Text");
QGraphicsView view(&scene);
view.setBackgroundBrush(QPixmap(":/Resources/cheese.jpg"));
view.show();

Отображает сцену на экране,но при
Код:

QGItem::QGItem(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
setCentralWidget(&view);
}

Центральный виджет остаётся пустым.
Что я делаю не так?


Название: Re: проблема с setCentralWidget (QGraphicsView)
Отправлено: Вячеслав от Май 05, 2007, 22:20
Цитата: "DenKa"
Код:

QGraphicsScene scene;
//scene.setSceneRect(-300, -300, 600, 600);
scene.addText("Text");
QGraphicsView view(&scene);
view.setBackgroundBrush(QPixmap(":/Resources/cheese.jpg"));
view.show();

Отображает сцену на экране,но при
Код:

QGItem::QGItem(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
setCentralWidget(&view);
}

Центральный виджет остаётся пустым.
Что я делаю не так?


А во втором случае view кто будет создавать ? Или откель оно береться ?


Название: проблема с setCentralWidget (QGraphicsView)
Отправлено: DenKa от Май 05, 2007, 22:38
Во втором случае код такой же, я опустил его для краткости:
QGItem::QGItem(QWidget *parent, Qt::WFlags flags)
   : QMainWindow(parent, flags)
{
   ui.setupUi(this);
   
    QGraphicsScene scene;
    scene.setSceneRect(-300, -300, 600, 600);
    scene.addText("Text");
    QGraphicsView view(&scene);
    view.setBackgroundBrush(QPixmap(":/Resources/cheese.jpg"));   
   
    setCentralWidget(&view);
}
Ошибок никаких нет, как нет ничего и на месте центрального виджета.
Возможно QGItem долно наследовать от чего-то ещё, кроме QMainWindow


Название: проблема с setCentralWidget (QGraphicsView)
Отправлено: pastor от Май 06, 2007, 10:16
имхо, проблема связана с временем существования объектов  scene, view. Они существуют на момент вызова конструктора. После вызова конструктора они уничтожаються. Попробуй сделать так:

Код:

QGItem::QGItem(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);

QGraphicsScene *scene = new QGraphicsScene();
scene->setSceneRect(-300, -300, 600, 600);
scene->addText("Text");
QGraphicsView *view = new QGraphicsView(scene);
view->setBackgroundBrush(QPixmap(":/Resources/cheese.jpg"));

setCentralWidget(view);
}


Название: проблема с setCentralWidget (QGraphicsView)
Отправлено: DenKa от Май 06, 2007, 10:46
Спасибо, заработало.