zhuzichu520 / FluentUI

FluentUI for QML
MIT License
3.42k stars 447 forks source link

启动后无报错但也没有窗口显示 #166

Open coconutzzZ336 opened 1 year ago

coconutzzZ336 commented 1 year ago

我大概按照example的方法自己写了一个程序,用的是qt quick模板,但debug的时候没有报错,也没有窗口显示。启动后也没有立即退出,而是一直在运行,需要强制退出才能关闭

环境 Qt:6.5.1 msvc2019_64

文件目录:

demo
    |----CMakeLists.txt
    |----main.cpp
    |----Main.qml
    |----login.qml

文件内容

//CMakeLists.txt
cmake_minimum_required(VERSION 3.16)

project(demo VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)

qt_standard_project_setup(REQUIRES 6.5)

qt_add_executable(appdemo
    main.cpp
)

qt_add_qml_module(appdemo
    URI demo
    VERSION 1.0
    QML_FILES Main.qml
    QML_FILES login.qml
)

set_target_properties(appdemo PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

target_link_libraries(appdemo
    PRIVATE Qt6::Quick
)

install(TARGETS appdemo
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
//main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,
        &app, []() { QCoreApplication::exit(-1); },
        Qt::QueuedConnection);
    engine.loadFromModule("demo", "Main");

    return app.exec();
}
//Main.qml
import QtQuick
import QtQuick.Window
import QtQuick.VirtualKeyboard
import QtQuick.Controls
import QtQuick.Layouts
import FluentUI

Window {
    id:app
    Component.onCompleted: {
        FluApp.init(app)
        FluApp.routes = {
            "/":"qrc:/qt/qml/demo/login.qml",
        }
        FluApp.initialRoute = "/"
        FluApp.run()
    }
}
login.qml
import QtQuick
import QtQuick.Window
import QtQuick.Controls
import FluentUI

FluWindow{

    id: window
    title: '登录'

    FluAppBar{
        id:title_bar
        title: window.title
        visible: true
        anchors{
            top: parent.top
            left: parent.left
            right: parent.right
        }
    }

    Item{
        anchors.top: title_bar.bottom
        height: 15
        width: 10
    }
}
zhuzichu520 commented 1 year ago

login.qml中Window的visible属性设置为true