0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 25
1

Как подключить QML-файл в C++ по моде, а также получить ссылки на QML-элементы в C++

08.03.2015, 09:08. Показов 2736. Ответов 1
Метки нет (Все метки)

Читал в интернете, как подключать QML-файлы. Кто-то использует QQmlView, кто-то QQmlApplicationEngine, а ещё приводят связку QQmlEngine и QQmlComponent тут - http://doc.qt.io/qt-5/qtqml-cp... cts-from-c
QQuickView крашится, когда я использую элемент ApplicationWindow уже в самом QML-коде.
С помощью QQmlEngine и QQmlComponent код компилируется, но окно не открывается.
Нормально работает QQmlApplicationEngine, но я не знаю, как получить из него ссылки на QML-элементы, чтобы потом взаимодействовать с ними.

Я нашёл решение, но оно не работает.

C++ (Qt)
1
2
3
4
5
6
7
...
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:/UI.qml"));
QObject* obj = engine.rootObjects.first();
QList <QObject*> lst = obj.findChildren<QObject*>("mainWindow");
for(int i = 0; i < lst.size();++i)
    qDebug() << lst[i]->objectName();
В выводе только двойные кавычки

Кидаю на всякий случай QML-код


Javascript
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import QtQuick 2.4
import QtQuick.Controls 1.3
 
 
ApplicationWindow {
    title: qsTr("Calc")
    width: 180
    height: 200
    minimumWidth: 200
    minimumHeight: 200
    maximumWidth: 200
    maximumHeight: 200
    visible: true
    objectName: "mainWindow"
 
    GridView {
        id: gridView1
        x: 0
        y: 0
        width: 200
        height: 186
        interactive: false
        boundsBehavior: Flickable.StopAtBounds
        flow: GridView.FlowTopToBottom
        cellHeight: 70
        delegate: Item {
            x: 5
            height: 50
            Column {
                Rectangle {
                    width: 40
                    height: 40
                    color: colorCode
                    anchors.horizontalCenter: parent.horizontalCenter
                }
 
                Text {
                    x: 5
                    text: name
                    font.bold: true
                    anchors.horizontalCenter: parent.horizontalCenter
                }
                spacing: 5
            }
        }
        cellWidth: 68
 
        TextField {
            id: textField1
            x: 8
            y: 6
            width: 184
            height: 41
            text: "0"
            font.pointSize: 18
            placeholderText: qsTr("")
            horizontalAlignment: TextInput.AlignRight
 
        }
 
        Button {
            id: button1
            x: 8
            y: 53
            width: 38
            height: 33
            text: qsTr("Button")
            onClicked: {textField1.text = button1.text}
        }
 
    }
 
 
}
Подскажите, как вы подключаете QML-код, а также работаете с ним из C++. Что можете посоветовать новичку в дальнейшей разработке QML и C++?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2015, 09:08
Ответы с готовыми решениями:

QMl/QT при нажатии на кнопку должен окрыться другой qml файл
Додал anchors Вот что я сделал: import QtQuick 2.5 import QtQuick.Controls 1.4 ...

Подсветка QML элементов QML-ного плагина в QtCreator в случае нахождения QML файлов плагина в ресурсах!
Здравствуйте! Если сделать плагин для QML и подключить его в основном проекте ну как - то так:...

qml - что из себя представляет qml
Решил написать игру на Qt,выбор остановился на танчиках.Посмотрел примеры и понял что все игры ,что...

Как получить доступ к qml элементам из с++
здравствуйте. пытаюсь управлять формой из срр, но получаю сегфолт. в qml при нажатии на кнопку...

1
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
08.03.2015, 23:37 2
Цитата Сообщение от Infinity20 Посмотреть сообщение
Что можете посоветовать новичку в дальнейшей разработке QML и C++?
я бы посоветовал оф. сайт с оф. документацией, где все эти вопросы освещены чуть более чем полностью
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2015, 23:37
Помогаю со студенческими работами здесь

QML вызов другого qml
Всем привет. Название темы немного неверное. Вообщем проблема такая. Делаю игру на qml, и есть...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru