c++ - 从 C++ 显示 qml 与 qmlscene 显示的不同

标签 c++ qml qt5

我尝试运行一个基本程序,通过 C++ 显示一个简单的 qml 文件。加载 QQmlEngine 等的代码如下所示:

#include <QQmlEngine>
#include <QQmlComponent>
#include <QDebug>
#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlEngine engine;
    QQmlComponent component(&engine);
    QQuickWindow::setDefaultAlphaBuffer(true);
    component.loadUrl(QUrl("qrc:///qmlFiles/main.qml"));
    if ( component.isReady() )
        component.create();
    else
        qWarning() << component.errorString();
    QObject::connect(&engine, SIGNAL(quit()), QCoreApplication::instance(),SLOT(quit()));
    return app.exec();
}

qml(简化)文件是:

import QtQuick 2.0
import QtQuick.Controls 1.0
import QtQuick.Dialogs 1.0


ApplicationWindow
{
    width:800
    height:600
    //background: "white"

    visible:true

    function selectFile()
    {
        fileChooser.visible=true;

    }

    menuBar:MenuBar {

            Menu{
                    title:"File"
                    MenuItem{
                        text:"Choose File"
                        shortcut: "Ctrl+F"
                        onTriggered:{
                            selectFile();

                        }
                    }


                    MenuItem {
                        text:"Quit"
                        shortcut: "Ctrl+Q"
                        onTriggered: Qt.quit()
                    }
            }
    }
   FileDialog{
        id:fileChooser
        visible:false
        modality:Qt.WindowModal
        title:"Choose data file"
        onAccepted:{
            console.log(fileChooser.fileUrls)
            visible:false
        }
        onRejected:{
            console.log("Cancel")
            visible:false
        }
    }

}

当我使用 qmlscene 从终端运行文件时,显示的内容与从 C++ 程序运行时不同。

我的猜测是 C++ 实现无法使用特定于平台的东西(例如 QFileDialog)并回退到这些东西的 qml 实现。

我想我需要以不同的方式加载 qml 文件,但如何加载?

最佳答案

原来有一些重写或 QGuiApplication 的东西。

将其更改为 QApplication 并且看起来和 qmlscene 中一样漂亮。

关于c++ - 从 C++ 显示 qml 与 qmlscene 显示的不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17544487/

相关文章:

c++ - OpenSSL 1.0.1f 和 "undefined reference to symbol ' SSL_state@@OPENSSL_1.0.0"

qt - Qml Text Item如何设置行间距?

c++ - Qt QProcess有时能用有时不能用

c++ - 在 qt creator 中使用 winpcap 库

c++ - 如何确定CRC16初始校验和,因此校验和为零

c++ - boost::make_shared 失败但 std::make_shared 工作

c++ - Visual Studio 2015 rc中从模板类派生的类的构造函数继承

c++ - 从 Qml 调用 C++ 时 Qt 5.12 偶发 SIGSEGV

python - 访问作为信号发送到 QML 的 Python 字典条目

qt - QSoundEffect 始终在 Qt 5.4 中加载状态