Всем привет. Никак не могу открыть обычное qml окно с стороны С++. Как бы вы реализовали данную функцию?
У меня вот такое решение:
view->setSource(QUrl::fromLocalFile(QApplication::applicationDirPath() + "EQDriveUpdateWindow.qml"));
view->show();
Но в итоге открывается и моё созданное окно и просто пустое окно. Как исправить?
Вангую - вы использовали QQuickView для отображения QML, но забыли заменить объявление окна на альтернативный корневой элемент.
main.cpp
#include <QApplication>
#include <QQuickView>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QQuickView view;
view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));
view.show();
return app.exec();
}
main.qml
import QtQuick.Controls 2.0
import QtQuick.Window 2.12
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Button {
anchors.centerIn: parent
height: 100
width: 100
text: "123"
}
}
При таком раскладе вы бы получили исчерпывающее предупреждение в консоли...
Исправить достаточно просто - нужно заменить корневой элемент Window на Item с привязкой ширины и высоты к родителю
import QtQuick.Controls 2.0
import QtQuick.Window 2.12
import QtQuick 2.0
Item {
Button {
anchors.centerIn: parent
height: 100
width: 100
text: "123"
}
onParentChanged: {
width=Qt.binding(()=>parent.width);
height=Qt.binding(()=>parent.height);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как устроена функция connect? Как лучше реализовать, стоит ли подключать 2 или 10 соединений с разными серверамиЧто будет, если подключений больше...
Поставил CodeBlocks для плюсов, компилятор GNU GCCНе запускается, пишет следующее:
Необходимо нарисовать полукруги вокруг центра с помощью Qt