gpt4 book ai didi

c++ - 使用qml + QQuickView作为初始屏幕不起作用

转载 作者:行者123 更新时间:2023-12-02 10:08:39 24 4
gpt4 key购买 nike

我想在我的c++ / qt / qml应用程序中添加一个初始屏幕。我添加了以下代码:

int main(int argc, char *argv[])
{


QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;

QQuickView *view = new QQuickView;
view->setSource(QUrl(QLatin1String("qrc:/Splash.qml")));
view->show();


engine.load(QUrl(QLatin1String("qrc:/main.qml")));

view->close();
app.exec();

return 0;

}

和Splash.qml文件:
import QtQuick 2.0
import QtQuick.Controls 2.1

Item {
visible: true
width: 640
height: 480
BusyIndicator {
anchors.centerIn: parent
width: 100
height: 100
running: true
Component.onCompleted: {
console.log("splash screen... " + x + " " + y + " " + width + "x" + height)
visible=true
}
}
}

当应用程序启动时,消息:“qml:启动屏幕... 270 190 100x100”被打印,但是QQuickWindow只是白色。 main.qml的主窗口可以正常工作。我试图在Splash.qml中加载图像,但存在同样的问题。而且,我不能使用QQuickView::setWindowFlags使其成为无框架窗口。我正在使用win7 64位操作系统。

最佳答案

您可以在QML中轻松做到这一点:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Window 2.0

Window {
id: mainWindow
width: 600
height: 400
visible: false
x: Screen.width / 2 - width / 2;
y: Screen.height / 2 - height / 2;

Window {
id: splashWindow
width: 300
height: 200
visible: true
x: Screen.width / 2 - width / 2;
y: Screen.height / 2 - height / 2;
flags: Qt.SplashScreen;
Rectangle {
anchors.fill: parent
color: "green";
}

ProgressBar {
id: progressBar
anchors.centerIn: parent
anchors.margins: 20
value: 0.01
}

Timer {
id: timer
interval: 50
repeat: true
running: true
onTriggered: {
progressBar.value += 0.01
if(progressBar.value >= 1.0) {
timer.stop();
mainWindow.visible = true;
splashWindow.destroy();
}
}
}
}
}

关于c++ - 使用qml + QQuickView作为初始屏幕不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44214812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com