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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: не могу использовать sceneRect  (Прочитано 4422 раз)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« : Март 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 задавал те же параметры, что и в тексте. Что-то я накосячил. Что именно, не подскажете?
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
BRE
Гость
« Ответ #1 : Март 05, 2010, 09:48 »

Не понятно, какие именно строки комментируешь в случае "Не работает".
Покажи, как точно выглядит конструктор в этом случае.
« Последнее редактирование: Март 05, 2010, 09:51 от BRE » Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #2 : Март 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);

}
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
BRE
Гость
« Ответ #3 : Март 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);
}
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #4 : Март 09, 2010, 07:13 »

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

QT4, Qt5, Qt6 Debian, ArchLinux
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Март 13, 2010, 12:36 »

>>This property holds the area of the scene visualized by this view
"Это свойство содержит область сцены, которая отображается этим представлением."
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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