#include <QGuiApplication>
从继承关系看,QApplication父类是QGuiApplication,QGuiApplication父类是QCoreApplication。
开发的应用无图像界面,就使用QCoreApplication;有图形界面,只使用QML实现,使用QGuiApplication,使用QWidget,或者QML与QWidget使用,则用QApplication。使用系统托盘systemtrayicon,就必须使用QApplication,否则无法创建系统托盘。
QApplication包含的功能最多,也就最笨重,QGuiApplication到QCoreApplication越来越轻量。分的这么细,主要目标是实现Qt Lite,到Qt5.8开始,实现用到什么模块,加载什么模块,尽量减小编译后的app体积。
#include <QQmlApplicationEngine>
//m.cpp 主要是把QML加载在程序中
int main(int argc, char *argv[])
{
#if defined(Q_OS_WIN)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
//调用 qml
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
import QtQuick 2.9
import QtQuick.Window 2.2
//设置一个对象 长宽
/*
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
}
*/
//设置一个对象 长宽
Window
{
//visible : 这个属性用于设置元素的可见性,为true时,元素可见,false时,元素不可见,默认为true。
visible: true
width:640
height:480
title: qsTr("Hello World")
//背景颜色
color:"green"
Text
{
text:qsTr("selen")
//对象颜色
color:"red"
anchors.centerIn: parent
}
MouseArea
{
//锚布局 是将子控件放在父控件的正中心,子控件的宽高是自己设置的;
anchors.centerIn: parent
//如果在这个区域
onClicked:
{
Qt.quit();
}
}
}