41 / 32 / 12
Регистрация: 15.04.2013
Сообщений: 326
1

По разному работает QGraphicsPathItem

11.02.2014, 10:17. Показов 1747. Ответов 6
Метки нет (Все метки)

На работе проект делаю в ОС "Заря". Там такие строки:
C++ (Qt)
1
2
3
    pathItem = new QGraphicsPathItem(path,0,scene);
    pathItem->setPen(QPen(Qt::darkGreen,3));
    pathItem->setVisible(true);
всё прекрасно работает. Честно говоря не помню какая там версия Qt. Пришлось проект взять домой, пытаюсь его настроить и запустить. Дома Qt 5.1.1. так вот на строке:
C++ (Qt)
1
    pathItem = new QGraphicsPathItem(path,0,scene);
начинает ругаться:

C++ (Qt)
1
2
3
4
5
6
7
8
C:\Qt\programs\NPU\NPU\formaero.cpp:226: ошибка: no matching function for call to 'QGraphicsPathItem::QGraphicsPathItem(QPainterPath&, int, QGraphicsScene*&)'
     pathItem = new QGraphicsPathItem(path,0,scene);
                                                     ^
------------------------------------
 
C:\Qt\Qt5.1.1\5.1.1\mingw48_32\include\QtWidgets\qgraphicsitem.h:634: QGraphicsPathItem::QGraphicsPathItem(QGraphicsItem*)
     explicit QGraphicsPathItem(QGraphicsItem *parent = 0);
              ^
т.е. он вместо QGraphicsScene ожидает QGraphicsItem в качестве параметра. Но почему тогда в "Заре" всё нормально работает? И как тогда исправить так, чтобы всё работало правильно и тут и там?
Мне обязательно нужны итемы, чтобы управлять их видимостью

Добавлено через 4 минуты
Стоит спросить, как решение быстро находится
Вот:
C++ (Qt)
1
2
3
4
    pathItem = new QGraphicsPathItem(path,0);
    pathItem->setPen(QPen(Qt::darkGreen,3));
    pathItem->setVisible(false);
    scene->addItem(pathItem);
так правильно?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2014, 10:17
Ответы с готовыми решениями:

QGraphicsScene, QGraphicsPathItem, QPaintPath
Уже второй день в сети ищу решение проблемы, да все никак. Нужно на QGraphicsScene с помощью...

QListWidget по разному работает
Здравствуйте! Подскажите почему этот код выводит разный результат на нескольких компьютерах: ...

QString в QHostAddress работает по-разному?
Здравствуйте! Помогите понять в чем причина непонятного поведения метода...

По разному работает append
Пытаюсь заполнить выпадающее меню. Если заполнять его вот так: $(".myClass").append('<option...

6
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
11.02.2014, 10:47 2
В исходниках версии 4.8. qgraphicsitem.h

C++ (Qt)
1
2
3
4
5
6
    QGraphicsPathItem(const QPainterPath &path, QGraphicsItem *parent = 0
#ifndef Q_QDOC
                      // ### obsolete argument
                      , QGraphicsScene *scene = 0
#endif
        );
, то есть, если я правильно понимаю, чтобы конструктор принимал QGraphicsScene в качестве третьего аргумента, должен быть определен макрос Q_QDOC.

Это только мое предположение.

Добавлено через 22 минуты
Цитата Сообщение от Aline_u Посмотреть сообщение
так правильно?
Если работает, значит правильно
0
41 / 32 / 12
Регистрация: 15.04.2013
Сообщений: 326
11.02.2014, 10:48  [ТС] 3
alexey_rage, а где и как и кем должен быть определен макрос? Я то вручную нигде не прописывала...

Насчет работает правильно, пока сказать не могу, у меня этих итемов много, надо всё исправить сначала
0
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
11.02.2014, 11:06 4
Цитата Сообщение от Aline_u Посмотреть сообщение
а где и как и кем должен быть определен макрос?
Честно говоря, я и сам не знаю. Думаю, можно на это вообще забить. Так как там прописано QGraphicsScene *scene = 0, то можно этот аргумент вообще не передавать.
Должно даже так работать:
C++ (Qt)
1
pathItem = new QGraphicsPathItem(path);
0
41 / 32 / 12
Регистрация: 15.04.2013
Сообщений: 326
11.02.2014, 11:12  [ТС] 5
alexey_rage, но итем должен быть добавлен в сцену
0
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
11.02.2014, 11:30 6
C++ (Qt)
1
2
3
4
pathItem = new QGraphicsPathItem(path);
    pathItem->setPen(QPen(Qt::darkGreen,3));
    pathItem->setVisible(false);
    scene->addItem(pathItem);
0
Эксперт C
26080 / 16269 / 3495
Регистрация: 24.12.2010
Сообщений: 35,665
07.03.2018, 17:01 7
Прошу прощения за гробокопательство. Просто меня заинтересовал макрос Q_QDOC. Смысла его пока не понял, видимо, для какой-то совместимости.
Цитата Сообщение от alexey_rage Посмотреть сообщение
чтобы конструктор принимал QGraphicsScene в качестве третьего аргумента, должен быть определен макрос Q_QDOC.
С точностью до наоборот. Он должен быть НЕ ОПРЕДЕЛЕН. ifndef
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2018, 17:01

Почему работает по-разному?
Почему работает по-разному? cout << "Hello, world! \n"; printf("%s\n","By, world!"); ...

WebBrowser по-разному работает на ПК и Ноутбуках
В прошлых постах я описывал свою проблему, почему при использовании...

3D max по-разному работает на 2-х компьютерах
Здравствуйте. у меня такой вопрос: в общем в наличии два одинакавых компьютера (двухъядерных),...

Приложение по разному работает на разных пк
Всем доброго времени суток, нужна ваша помощь. Написал программу в которой одна из функций по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.