Я пытаюсь создать игру, в которой часть ui выполнена в qml (меню и т. Д.), В то время как часть рендеринга и логики находится на C++. Для этого я использую подкласс QGLWidget. Игра начинается с Qml (с использованием QDeclarativeContext в основной функции) и при нажатии «NewGame» я загружаю свой подкласс QGLWidget. Что-то вроде этого:Как закрыть окно Qml при создании QGLWidget
GameButton{
id:button2_1_1
x: 69
y: 101
width: 80
height: 80
onClicked:{ myObject.initialize(); myObject.show(); }
}
// myObject sets the context property to the object of my QGLWidget subclass
Проблема заключается в том, что я не могу понять способ закрыть свое окно QML, когда я загружаю QGLWidget. Как с тем, что я сделал, два окна отображаются одновременно.
Вот код для этого.
// импорт QtQuick 1.0 // целевой S60 5th Edition или Maemo 5 импорт QtQuick 1,1
Rectangle {
id:newGameMenu
width: 640
height: 360
signal button2Clicked();
onButton2Clicked: console.log("new game should start")
Image{
id:background
source:"menubackground.jpg"
anchors.fill:parent
Button2 {
id: button21
x: 70
y: 101
width: 42
height: 42
}
}
Button2{
id:button2_1_1
x: 69
y: 101
width: 44
height: 44
onClicked:{ myObject.abc(); myObject.show(); console.log("glwindow called"); }
}
}
main.cpp
#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
#include <QDeclarativeView>
#include <QDeclarativeItem>
#ifndef GLWINDOW_H
#include "glwindow.h"
#endif
#include <QObject>
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer<QApplication> app(createApplication(argc, argv));
QDeclarativeView view;
GLWindow w;
view.rootContext()->setContextProperty("myObject", &w);
view.setSource(QUrl::fromLocalFile(""));
view.show();
qDebug() << "into the qml";
return app->exec();
}
Я не могу скрыть свой QDeclarativeView – akhil
вы можете объяснить? что вы пытались и что происходит, когда вы пытались скрыть это? – Kunal
Я попытался установить .visible = false для виджета меню в onClicked. Но то, что он делает, устанавливает изображения в меню невидимыми, а не закрывает окно. Я хочу сказать, что я вижу пустое окно и другое окно одновременно. – akhil