实战|Qt开发WordBN笔记软件#06 学习QML、C++混合编程方式

01 背景

【WordBN字远笔记】是天恩软件工作室开发的一款免费笔记软件;WordBN基于VS2019、Qt6.5开发,使用Qt Quick(QML)开发语言。

本课程将以【WordBN字远笔记】的界面为实战基础,详细介绍如何基于Qt/QML开发语言,从零开始开发一套真正的程序,包括国际化、版本发布、安装包制作等项目实战技巧。

本课程重点不是教你如何开发一个笔记软件,而是教你如何利用Qt/QML+C++开发一个完整的程序,整套课程规划有40+章节,敬请关注!


本章内容《#06 学习QML、C++混合编程方式:QML调用C++接口;获取屏幕尺寸》

02 课程目标

  • 新建C++类,添加函数实现获取当前屏幕宽度和高度。
  • 把C++类注册QML上。
  • 在QML界面YApplicationWindow调用C++函数,实现界面初始显示宽度和高度。

03 知识点

  • 注册给QML使用的C++类必须继承于QObject,并在其中使用Q_OBJECT宏。
  • QINVOKABLE宏:QINVOKABLE用来修饰一个C++成员函数,使该成员函数暴露给QML。

04 新建常用套件C++类:YUtils

  • YUtils类设计:用于实现一些常用功能;如获取屏幕尺寸,文件读写等
  • 新建C++类YUtils:

  • Q_INVOKABLE用于修饰函数,让C++类函数支持QML调用;YUtils.h 头文件代码如下:
#ifndef YUTILS_H
#define YUTILS_H

#include <QObject>

// 常用方法套件类
class YUtils : public QObject
{
    Q_OBJECT
public:
    explicit YUtils(QObject *parent = nullptr);

    // 获取屏幕宽度函数
    Q_INVOKABLE static int getScreenWidth();
    // 获取屏幕高度函数
    Q_INVOKABLE static int getScreenHeight();

signals:

};

#endif // YUTILS_H
  • 获取屏幕宽度和高度函数核心代码:
#include <QGuiApplication>
#include <QScreen>

int YUtils::getScreenWidth()
{
    QScreen *screen = QGuiApplication::primaryScreen();
    QRect rect = screen->geometry();
    int width = rect.width();
    return width;
}

int YUtils::getScreenHeight()
{
    QScreen *screen = QGuiApplication::primaryScreen();
    QRect rect = screen->geometry();
    int height = rect.height();
    return height;
}

05 将C++类YUtils注册到QML上下文

  • 修改 main() 函数注册C++类到QML上下文,核心例子代码如下:
#include "YUtils.h"

YUtils utils;

QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("utils", &utils);

06 YApplicationWindow.qml调用C++函数

  • YApplicationWindow.qml 调用 YUtils 函数,实现主界面默认宽度高度功能,代码如下:
import QtQuick
import QtQuick.Controls

ApplicationWindow {
    visible: true
    width: utils.getScreenWidth() - 20
    height: utils.getScreenHeight() - 80
    title: qsTr("WordBN")

    menuBar: YMenuBar {

    }

}

07 课后练习

  • 新增多语言切换C++类YLanguage,实现切换语言功能并注册到QML。
  • 结合前一课内容,实现点击菜单切换中文和英文,并保存当前语言到ini配置文件,每次程序重启能自动读取到当前语言并自动切换。
  • 使用QSetting类保存和读取ini配置文件。

-End-

#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。

本人小杨哥:

超20年C++开发经验,独立软件开发;著名开源产品高并发C++应用服务器MYCP作者;开源企业即时通讯软件Entboost首席架构师;开发有WordBN字远笔记等共享软件产品。招C++/Qt开发学员,欢迎关注咨询~~

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天恩软件工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值