网站建设模块,网站建设做网站多少钱,网站悬挂备案号,电商网站seo优化1、创建QML工程
1#xff09;新建工程 打开QtCreator10,依次点击“Create Project” -- “Application(Qt)” -- “Qt Quick Application(compat)” 注意#xff1a;本人打算使用Qt5.15.2创建工程#xff0c;而非Qt6,因此选择兼容低于Qt6版本的“Qt Quick Applicat…1、创建QML工程
1新建工程 打开QtCreator10,依次点击“Create Project” -- “Application(Qt)” -- “Qt Quick Application(compat)” 注意本人打算使用Qt5.15.2创建工程而非Qt6,因此选择兼容低于Qt6版本的“Qt Quick Application(compat)”来创建 2设置工程名、路径 3选择构建系统 这里选择构建系统为qmake如果在第一步新建工程时选择的是“Qt Quick Application”这里将看不到qmake因为Qt6使用cmake构建。 4选择Qt版本 本人选择为Qt5.15本人没有选择虚拟键盘请各位看官根据需要来添加 5选择翻译语言 本人选择为中文Chinese(China)不选择也可以 6选择编译套件Kit 本人选择为Qt5.15.2 64bit 7完成 最后在“总结”(Summary)界面点击完成Finish即可。
在这里根据需要可以设置版本管理。
2、编译、运行
创建完成后直接编译、运行即可默认界面如下
3、代码讲解
3.1 工程结构
最小工程共5个文件
$ tree
├── GwQmlDemo1.pro // 工程pro文件
├── GwQmlDemo1_zh_CN.ts // 翻译ts文件
├── main.cpp // 主文件由此进入qml世界
├── main.qml // qml描述文件
└── qml.qrc // qrc资源文件将qml文件加载到程序中在编译生成的二进制可执行文件中可以看到qml的内容
3.2 main.cpp详解
1头文件
#include QGuiApplication
#include QQmlApplicationEngine
#include QLocale
#include QTranslator除了QQmlApplicationEngine其它头文件很常见QQmlApplicationEngine类下面会详细讲解
2对高DPI显示屏的支持
int main(int argc, char *argv[])
{
#if QT_VERSION QT_VERSION_CHECK(6, 0, 0)QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endifQGuiApplication app(argc, argv);DPI每英寸长度内的像素点数; 设置应用程序属性为 Qt :: AA_EnableHighDpiScaling 可以根据显示器的像素密度进行自动缩放。 上面这句话是啥意思呢 如果不设置 Qt :: AA_EnableHighDpiScaling 在一些高DPI显示屏上设计时的窗口尺寸和显示的不一致如下图所示 3翻译 在创建项目时选择了翻译Translator因此会自动生成如下代码
QTranslator translator;
const QStringList uiLanguages QLocale::system().uiLanguages();
for (const QString locale : uiLanguages) {const QString baseName GwQmlDemo1_ QLocale(locale).name();if (translator.load(:/i18n/ baseName)) {app.installTranslator(translator);break;}
}4加载qml 下面的代码等于 QQmlApplicationEngine engine(“qrc:/main.qml”);其它代码是错误处理 QQmlApplicationEngine engine;const QUrl url(QStringLiteral(qrc:/main.qml));QObject::connect(engine, QQmlApplicationEngine::objectCreated,app, [url](QObject *obj, const QUrl objUrl) {if (!obj url objUrl)QCoreApplication::exit(-1);}, Qt::QueuedConnection);engine.load(url);return app.exec();
}QQmlApplicationEngine该类可以加载单个QML文件它结合了QQmlEngine和QQmlComponent方法。 注意QQuickView会自动创建根窗口QQmlApplicationEngine不会自动创建根窗口因此qml中需要使用Window对象为 Qt Quick 场景创建一个新的顶级窗口。
QQmlApplicationEngine::objectCreated当对象完成加载时会发出此信号。如果加载成功object包含指向加载对象的指针否则该指针为 NULL。可以使用该信号来确定对象树何时准备就绪。
QQmlApplicationEngine::load加载根 QML 文件
3.3 main.qml详解
1导入模块 使用import来导入模块和include类似
import QtQuick 2.15
import QtQuick.Window 2.15还有个常用的模块
import QtQuick.Controls 包含各种按键等2元素、属性
Window {width: 640height: 480visible: truetitle: qsTr(Hello World)
}Window即是种元素常见的元素还有Rectangle、Text、Button、Image、MouseArea、Item等 width、height、visible、title等皆为属性
4、补充
4.1 元素列表
可在官网查看所有的元素 Qt5https://doc.qt.io/qt-5/qmltypes.html Qt6https://doc.qt.io/qt-6/qmltypes.html
4.2 属性列表
以Window为例Window的全部属性可以在官网查看Window属性列表如下
active : bool 活动状态
activeFocusItem : Item 当前具有活动焦点的项目
color : color 窗口的背景颜色
contentItem : Item 场景中不可见根项目
contentOrientation : Qt::ScreenOrientation
data : listQtObject data 属性允许您在一个窗口中自由混合可视子项、资源和其他窗口。
flags : Qt::WindowFlags
height : int
maximumHeight : int
maximumWidth : int
minimumHeight : int
minimumWidth : int
modality : Qt::WindowModality 窗口的形态
opacity : real 窗 口的不透明度
screen : variant 与窗口关联的屏幕
title : string 窗口的标题
transientParent : QWindow 随父窗口显示或隐藏如果设置为NULL将独立显示
visibility : QWindow::Visibility 可见性是指窗口在窗口系统中是否应以正常、最小化、最大化、全屏或隐藏的方式显示
visible : bool 窗口在屏幕上是否可见
width : int
x : int
y : int