Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
WxMaper
33 / 33 / 8
Регистрация: 19.10.2013
Сообщений: 344
1

Как создать класс наследник из приватных сорцев? (QQuickImage)

28.11.2014, 11:24. Просмотров 607. Ответов 5
Метки нет (Все метки)

День добрый! Хочу из c++ создать объект в Qml, но не получается создать класс-наследник от QQuickImage :/

в .pro файле я добавил
C++ (Qt)
1
2
INCLUDEPATH += "C:\Qt\Qt5.3.2\5.3\mingw482_32\include\QtQuick\5.3.2\QtQuick\private" \
 "C:\Qt\Qt5.3.2\5.3\mingw482_32\include\QtQuick\5.3.2\QtQuick"

Класс написал по простому:
bfaenginetank.h
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef BFAENGINETANK_H
#define BFAENGINETANK_H
 
#include <QObject>
#include "qsize.h"
#include "qpoint.h"
 
#include <QQuickItem>
#include <QQuickImageProvider>
#include "qquickimage_p.h"
 
class BFAEngineTank : public QQuickItem
{
  Q_OBJECT
 
  Q_PROPERTY(int command READ command WRITE setCommand NOTIFY commandChanged)
  Q_PROPERTY(int objectType READ objectType WRITE setObjectType NOTIFY objectTypeChanged)
  Q_PROPERTY(int tankModel READ tankModel WRITE setTankModel NOTIFY tankModelChanged)
 
 
public:
  BFAEngineTank();
  ~BFAEngineTank();
 
  int command() { return mCommand; }
  void setCommand(int command);
 
  int objectType() { return mObjectType; }
  void setObjectType(int objectType);
 
  int tankModel() { return mTankModel; }
  void setTankModel(int tankModel);
 
signals:
  void commandChanged();
  void objectTypeChanged();
  void tankModelChanged();
 
private:
  int mCommand;
  int mObjectType;
  int mTankModel;
  QList<QString> models;
};
 
 
class QQuickImage;
class BFAEngineTankImage : public QQuickImage
{
};
 
#endif // BFAENGINETANK_H


bfaenginetank.cpp
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "bfaenginetank.h"
 
BFAEngineTank::BFAEngineTank()
{
  mCommand = 0;
  mObjectType = 50;
  mTankModel = 0;
 
  models
    << "tankModel_0.png"
    << "tankModel_1.png";
 
  BFAEngineTankImage image;
  image.setSource("qrc:///res/images/tankModel_0.png");
}
 
BFAEngineTank::~BFAEngineTank()
{
}
...


При компиляции выдает ошибку:
C++ (Qt)
1
2
no matching function for call to 'BFAEngineTankImage::setSource(const char [31])'
   image.setSource("qrc:///res/images/acroread.png");
Сам класс BFAEngineTank создается нормально и доступен в Qml:
C++ (Qt)
1
2
3
4
5
6
7
8
9
Tank {
        id: tank
        width: 50
        height: 50
        x: 10
        y: 10
        tankModel: 1
        command: 1
    }
но я еще хотел чтобы при создании объекта Tank{} у него сразу было изображение, чтобы не вставлять его вручную в редакторе .qml, типа Image{ source: ...}
Как сделать правильно?

Добавлено через 41 минуту
глупый я, глупый... надо было путь до картинки передать через QUri() =) ок. Теперь компилится с ошибкой
C++ (Qt)
1
bfaenginetank.cpp:-1: ошибка: undefined reference to `QQuickImage::QQuickImage(QQuickItem*)'
Поправил заголовочный файл на:
C++ (Qt)
1
2
public:
  BFAEngineTank(QQuickItem *parent = 0);
В исходнике исправил на
C++ (Qt)
1
2
3
4
5
  BFAEngineTank::BFAEngineTank(QQuickItem* parent)
{
...
  QQuickImage* image = new QQuickImage(this);
  image->setSource(QUrl("qrc:///res/images/tankModel_0.png"));
- не помогает. Что опять не так? %(

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2014, 11:24
Ответы с готовыми решениями:

Класс и его наследник класс-массив
Есть класс и его наследник. Программа БД картотеки поликлиники. Наследник...

Класс многомерного массива наследник std::vector
Всем привет! В BuildereC++ Необходимо создать класс, наследник многомерного...

Создать класс Pair(пара чисел) и класс-наследник Fraction
Создать класс Pair (пара чисел); определить методы изменения полей и сравнения...

Создать базовый класс прямоугольник и класс-наследник квадрат
Создать базовый класс прямоугольник со свойствами ширина, длина, конструктором...

Создать класс с одним полем и класс наследник с другим
Создать класс Демо с одним полем Дата(инт) создать конструктор по умолчанию, с...

5
Dmitriy_M
1429 / 1309 / 131
Регистрация: 20.03.2009
Сообщений: 4,680
Записей в блоге: 11
28.11.2014, 15:45 2
Цитата Сообщение от WxMaper Посмотреть сообщение
День добрый! Хочу из c++ создать объект в Qml, но не получается создать класс-наследник от QQuickImage :/
зачем совать нос туда, куда не разрешают?
0
WxMaper
33 / 33 / 8
Регистрация: 19.10.2013
Сообщений: 344
28.11.2014, 16:29  [ТС] 3
Ну почему не разрешают? Узнал что можно подключить файлы этого класса добавив в проект QT += quick-private, и никакого INCLUDEPATH не надо, значит разрешают
С другой стороны, почему к QQuickItem есть доступ, а к QQuickImage и, допустим, к QQuickRectangle - нет? Почему нельзя создавать компоненты на их основе? Не совсем понятно
0
Dmitriy_M
1429 / 1309 / 131
Регистрация: 20.03.2009
Сообщений: 4,680
Записей в блоге: 11
28.11.2014, 16:51 4
Спрашивается на хрена это нужно?
0
WxMaper
33 / 33 / 8
Регистрация: 19.10.2013
Сообщений: 344
28.11.2014, 17:02  [ТС] 5
Я же написал, что хотел создавать компонент с рисунком в зависимости от его типа... В моем случае, чтобы можно было просто указать модель танка и он нарисовался с нужной геометрией без использования компонента Image {} внутри компонента Tank {}
0
Dmitriy_M
1429 / 1309 / 131
Регистрация: 20.03.2009
Сообщений: 4,680
Записей в блоге: 11
28.11.2014, 22:30 6
Цитата Сообщение от WxMaper Посмотреть сообщение
геометрией без использования компонента Image {} внутри компонента Tank {}
Чем не устраивает?

Есть еще QQuickPaintedItem
0
28.11.2014, 22:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2014, 22:30

Создать класс Point и класс-наследник Line
Создайте класс Point (точка), который содержит элементы целого типа xCoordinate...

Абстрактный класс CGraphicsObject, его наследник - базовый класс CPoint, и класс - наследник от CPoint
Всем доброй ночи! Очень нужна помощь и по мере возможности разъяснения на темы:...

Сознатие графического приложения (Создать класс-наследник от FIGURE)
1). Создать класс-наследник от FIGURE, который представляет собой ...


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

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

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