Russian Qt Forum

Qt => Общие вопросы => Тема начата: mokynis от Март 05, 2010, 09:40



Название: не могу использовать sceneRect
Отправлено: mokynis от Март 05, 2010, 09:40
В Qt Creator'е создается Dialog, на него кладу QGraphicsView. Если задаю размеры scene непосредственно, то все работает, а если пытаюсь использовать свойства GraphicsView,
 выдается ошибка
Цитировать
The program has unexpectedly finished.
Вот текст:
Цитировать
Dialog::Dialog(QWidget *parent)
    : QDialog(parent), ui(new Ui::Dialog)
{
    ui->setupUi(this);
//так все в порядке
    QGraphicsScene *scene=new QGraphicsScene;
    scene->setSceneRect(0,0,300,270);
    ui->graphicsView->setScene(scene);
    QGraphicsLineItem* pLineItem=scene->addLine(20,15,50,80,QPen(Qt::red,2));
//а вот так не работает
//    QGraphicsLineItem* pLineItem=ui->graphicsView->scene()->addLine(20,15,50,80,QPen(Qt::red,2));
    pLineItem->setFlags(QGraphicsItem::ItemIsMovable);

}
При этом в дизайнере у объекта graphicsView в свойстве sceneRect задавал те же параметры, что и в тексте. Что-то я накосячил. Что именно, не подскажете?


Название: Re: не могу использовать sceneRect
Отправлено: BRE от Март 05, 2010, 09:48
Не понятно, какие именно строки комментируешь в случае "Не работает".
Покажи, как точно выглядит конструктор в этом случае.


Название: Re: не могу использовать sceneRect
Отправлено: mokynis от Март 05, 2010, 09:55
выше-рабочий вариант. А вот не рабочий:
Цитировать
Dialog::Dialog(QWidget *parent)
    : QDialog(parent), ui(new Ui::Dialog)
{
    ui->setupUi(this);
//так все в порядке
//    QGraphicsScene *scene=new QGraphicsScene;
//    scene->setSceneRect(0,0,300,270);
//    ui->graphicsView->setScene(scene);
//    QGraphicsLineItem* pLineItem=scene->addLine(20,15,50,80,QPen(Qt::red,2));
//а вот так не работает
    QGraphicsLineItem* pLineItem=ui->graphicsView->scene()->addLine(20,15,50,80,QPen(Qt::red,2));
    pLineItem->setFlags(QGraphicsItem::ItemIsMovable);

}


Название: Re: не могу использовать sceneRect
Отправлено: BRE от Март 05, 2010, 09:58
Ну так сцену ты не создал и не установил в view.
Код
C++ (Qt)
Dialog::Dialog(QWidget *parent)
   : QDialog(parent), ui(new Ui::Dialog)
{
   ui->setupUi(this);
   QGraphicsScene *scene=new QGraphicsScene;
   ui->graphicsView->setScene(scene);
   QGraphicsLineItem* pLineItem=ui->graphicsView->scene()->addLine(20,15,50,80,QPen(Qt::red,2));
   pLineItem->setFlags(QGraphicsItem::ItemIsMovable);
}


Название: Re: не могу использовать sceneRect
Отправлено: mokynis от Март 09, 2010, 07:13
а что же тогда задает параметр sceneRect у QGraphicsView? Я в дизайнере задаю размеры сцены. Я так понял, что используя GraphicsView, я сразу с ним использую некую сцену по умолчанию
Цитировать
This property holds the area of the scene visualized by this view
. Или я не так понял?


Название: Re: не могу использовать sceneRect
Отправлено: lit-uriy от Март 13, 2010, 12:36
>>This property holds the area of the scene visualized by this view
"Это свойство содержит область сцены, которая отображается этим представлением."