QT6 Widgets深入剖析】的更多相关文章

先说明一下,本水文老周仅讨论新版的 Qt 6,旧版的 Qt 不讨论. 尽管 Qt 有自己的开发环境,但老周必须说句不装逼的话:真的不好用.说起写代码,当然了,用记事本也能写.但是,有个高逼格的工具,写起来不仅效率高,而且舒服. Qt 应用程序本质上就是 C++ 开发的代码,所以,不用官方工具是没有问题的.老周第一个想到的,不用猜,必是 VS.在 Windows 上,用 VS 也是没问题的. 安装的时候,工作负载可以选"使用C++的桌面开发",这个其实不选也可以的,老周已做过实验,不选这…
上一次水文中,老周所介绍的是编译 Qt 的基础模块-- qtbase.一次性编译所有代码可以一劳永逸,但体积相当大,编译时间较长,CPU负载大发热大,风扇转得猛,电费交得多.因此老周更喜欢分开来编译. qtbase 模块已经能完成一般的 Qt 开发了,毕竟它包含了铁三角-- Core.Gui.Widgets.有这三个硬汉到场,Qt应用就能运行起来.而附加模块是为了特殊需要的,比如 OpenGL.当要用到某模块时再增量编译,这样逼格更高,也省事. 本文老周以编译多媒体模块 qtmultimedia…
在正题开始之前,老周照例扯点别的.嗯,咱们扯一下在 VS 2022 下结合 CMake 开发 Qt6 时的环境变量设置问题.在VS Code 中,通够通过 CMake Tools 扩展的配置来设置环境,但在VS 里面,CMake 项目只是一个文件夹,然后通过 .json 文件来配置一些参数,不能像 VS Code 那样设置环境变量. 当然,如果你嫌麻烦,最简单粗暴的方法,就是在系统级或用户级别直配置全局环境变量.这样所有开发工具都能共享这些环境变量.但有时候,你不希望把 Qt 库的路径放上去,因…
Qt 里面的信号(Signal)和槽(Slot)虽然看着像事件,但它实际上是用来在两个对象之间进行通信的.既然是通信,就会有发送者和接收者. 1.信号是发送者,触发时通过特有的关键字"emit"来发出信号. 2.槽是信号的接收者,它实则是一个方法(函数 )成员,当收到信号后会被调用. 为了让C++类能够使用信号和槽机制,必须从 QObject 类派生.QObject 类是 Qt 对象的公共基类.它的第一个作用是让 Qt 对象之形成一株"对象树".当某个 Qt 对象发…
Qt 具备让某个对象的信号与符合要求的槽函数自动建立连接.弄起来也很简单,只要调用这个静态方法即可: QMetaObject::connectSlotsByName(...); connectSlotsByName 方法需要一个参数,此参数的指针指向一个实例,这个实例自身的信号,以及它的子级对象的信号都会自动连接. 不过,在用的时候要注意以下几点,否则 connectSlotsByName 方法是不起作用的. 1.如果类是从某个 QObject 类派生的,比如常见的 QWidget 类,在类的声…
WorldWindow用户定制控件类中所包含的的挂件类Widgets控件主要有如下图所示的派生类.它们的类图如下所示. 鉴于挂件类Widgets及其派生类,相对简单,基本上都是些利用DirectX3D进行绘图和处理图标纹理影像等的操作,此处不再对各个类的主要的字段.属性和方法进行描述了.感兴趣的读者可以直接阅读源码.建议阅读源码之前读者应具备一定的DirectX3D开发基础. 挂件PictureBox类被WavingFlags.TimeController等插件引擎子类所引用. 挂件Button…
Unity3D-NGUI分析,使用NGUI做UI须要注意的几个要点在此我想罗列一下,对我在U3D上做UI的一些总结,最后解剖一下NGUI的源码.它是假设架构和运作的. 在此前我介绍了自己项目的架构方式,所以在NGUI的利用上也是相同的做法,UI逻辑的程序不被绑定在物体上. 那么怎样做到GUI输入消息的传递呢,答案是:我封装了一个关于NGUI输入消息的类.因为NGUI的输入消息传递方式是U3D中的SendMessage方式,所以在每一个须要接入输入的物体上动态的绑定该封装脚本. 在这个消息封装类中…
目录 一.forms组件渲染标签 二.forms组件展示信息 三.forms组件校验补充 四.forms组件参数补充 五.forms组件源码剖析 六.modelform组件 什么是modelform组件? 使用校验性组件的目的 常用参数介绍 代码展示 七.django中间件 什么是中间件? 如何自定义中间件 八.作业 一.forms组件渲染标签 forms组件的渲染标签比较强大, 主要有三种方式 部分代码如下: 使用之前需要在视图层定义函数调用我们自己定义的form模型表 class MyFor…
原来的水文标题是"用 VS Code 搞 Qt6",想想还是直接改为"Qt6",反正这个用不用 VS Code 也能搞.虽然我知道大伙伴们都很讨厌 CMake,但毕竟这厮几乎成了 C++ 的玩家规范了.Qt 也算识大体,支持用 CMake 来构建程序.所以,只要你用的是能写 C++ 的工具,理论上都能搞 Qt. 创建应用程序界面的时候,我们一般会选用 QWidget 以及其子类的.不过,在 Gui 模块中,有一个 QWindow 类,干吗用的呢?写个程序试试看. #…
阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和finally代码块内的Await nameof表达式 扩展方法 总结 自动属性默认初始化 使用方法: public string Name { get; set; } = "hello world"; 为了便于理解使用2.0语法展示,编译器生成代码如下: public class Custom…