如何更改QtQuick 2窗口的标题?

adi*_*adi 6 c++ qt

我试图更改我的项目的默认窗口,但它不起作用.我正在使用QtQuick 2.0.尝试导入QtQuick.Window 2.0并将Window {}作为根对象而不是Rectangle {},但它不允许窗口对象作为root.It给出了以下错误:

QQuickView only supports loading of root objects that derive from QQuickItem. 

If your example is using QML 2, (such as qmlscene) and the .qml file you 
loaded has 'import QtQuick 1.0' or 'import Qt 4.7', this error will occur. 

To load files with 'import QtQuick 1.0' or 'import Qt 4.7', use the 
QDeclarativeView class in the Qt Quick 1 module.
Run Code Online (Sandbox Code Playgroud)

有关如何更改窗口标题的任何想法?我正在使用Qt 5.1.1.

dra*_*gly 11

这取决于您希望如何使用GUI.如果您想对几乎所有内容使用QML,从窗口创建到Windows中的元素,以下解决方案可能是您的最佳选择.

Qt5.1,仅适用于桌面

如果你有Qt5.1,您可以使用新的ApplicationWindow从项目QtQuick.Controls你在一个文件名为root对象main.qml:

import QtQuick 2.0
import QtQuick.Controls 1.0

ApplicationWindow {
    visible: true
    width: 360
    height: 360
    title: "MyWindow"

    Text {
        text: "Hello world!"
        anchors.centerIn: parent
    }
}
Run Code Online (Sandbox Code Playgroud)

为避免收到错误消息,您需要使用QQmlApplicationEngine而不是QQuickView启动应用程序.这可以在main.cpp文件中完成,如下所示:

#include <QtGui/QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{    
    QGuiApplication app(argc, argv);    
    QQmlApplicationEngine engine("main.qml");    
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

Qt5.0,(可能)适用于桌面以外的环境

如果使用Qt5.1不适合您,或者您的目标设备尚未支持QtQuick.Controls,则可以选择以下列方式使用Window.将其添加到main.qml:

import QtQuick 2.0
import QtQuick.Window 2.0

Window {
    visible: true
    width: 360
    height: 360
    title: "MyWindow"

    Text {
        text: "Hello world!"
        anchors.centerIn: parent
    }
}
Run Code Online (Sandbox Code Playgroud)

让这成为你的main.cpp:

#include <QtGui/QGuiApplication>
#include <QQmlEngine>
#include <QQmlComponent>

int main(int argc, char *argv[])
{    
    QGuiApplication app(argc, argv);    
    QQmlEngine engine;
    QQmlComponent component(&engine, QUrl::fromLocalFile("main.qml"));
    component.create();    
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

这应该打开一个带有"Hello World!"文本的窗口.