在正题开始之前,老周照例扯点别的.嗯,咱们扯一下在 VS 2022 下结合 CMake 开发 Qt6 时的环境变量设置问题.在VS Code 中,通够通过 CMake Tools 扩展的配置来设置环境,但在VS 里面,CMake 项目只是一个文件夹,然后通过 .json 文件来配置一些参数,不能像 VS Code 那样设置环境变量. 当然,如果你嫌麻烦,最简单粗暴的方法,就是在系统级或用户级别直配置全局环境变量.这样所有开发工具都能共享这些环境变量.但有时候,你不希望把 Qt 库的路径放上去,因…
1 基础窗口部件 QWidget QWidget 类是所有用户界面对象的基类,被称为基础窗口部件.不多废话直接看代码 main.cpp 如下 #include<QtWidgets> int main(int argc, char *argv[]) { QApplication a(argc,argv); //创建QWidget类对象, 默认parent参数是0,所以他是个窗口 QWidget *widget = new QWidget(); // Qt::WindowFlags widget…
先说明一下,本水文老周仅讨论新版的 Qt 6,旧版的 Qt 不讨论. 尽管 Qt 有自己的开发环境,但老周必须说句不装逼的话:真的不好用.说起写代码,当然了,用记事本也能写.但是,有个高逼格的工具,写起来不仅效率高,而且舒服. Qt 应用程序本质上就是 C++ 开发的代码,所以,不用官方工具是没有问题的.老周第一个想到的,不用猜,必是 VS.在 Windows 上,用 VS 也是没问题的. 安装的时候,工作负载可以选"使用C++的桌面开发",这个其实不选也可以的,老周已做过实验,不选这…
上一次水文中,老周所介绍的是编译 Qt 的基础模块-- qtbase.一次性编译所有代码可以一劳永逸,但体积相当大,编译时间较长,CPU负载大发热大,风扇转得猛,电费交得多.因此老周更喜欢分开来编译. qtbase 模块已经能完成一般的 Qt 开发了,毕竟它包含了铁三角-- Core.Gui.Widgets.有这三个硬汉到场,Qt应用就能运行起来.而附加模块是为了特殊需要的,比如 OpenGL.当要用到某模块时再增量编译,这样逼格更高,也省事. 本文老周以编译多媒体模块 qtmultimedia…
Qt 里面的信号(Signal)和槽(Slot)虽然看着像事件,但它实际上是用来在两个对象之间进行通信的.既然是通信,就会有发送者和接收者. 1.信号是发送者,触发时通过特有的关键字"emit"来发出信号. 2.槽是信号的接收者,它实则是一个方法(函数 )成员,当收到信号后会被调用. 为了让C++类能够使用信号和槽机制,必须从 QObject 类派生.QObject 类是 Qt 对象的公共基类.它的第一个作用是让 Qt 对象之形成一株"对象树".当某个 Qt 对象发…
Qt 具备让某个对象的信号与符合要求的槽函数自动建立连接.弄起来也很简单,只要调用这个静态方法即可: QMetaObject::connectSlotsByName(...); connectSlotsByName 方法需要一个参数,此参数的指针指向一个实例,这个实例自身的信号,以及它的子级对象的信号都会自动连接. 不过,在用的时候要注意以下几点,否则 connectSlotsByName 方法是不起作用的. 1.如果类是从某个 QObject 类派生的,比如常见的 QWidget 类,在类的声…
一般来说,用C++写 Qt 应用才是正宗的,不过,为了让小学生也能体验 Qt 的开发过程,或者官方为了增加开发者人数,推出了可用 Python 来编程的 Qt 版本.此版本命名比较奇葩,叫 PySide,与 Qt 6 配套的是 PySide 6.当前最新版本是 6.3.2. PySide 的优势在于它是官方维护的,完全是C++开发的.在原有库基础上增加了对应的 .pyd 文件,对 API 做了封装,并由 .pyi 文件进行类型规范.在性能上是不用担心的,但是,这种开发方式用来学习较适合,真要做个…
从这一章开始正式接触Qt的窗口部件.在第2章曾看到 Qt Creator 提供的默认基类只有 QMainWindow.QWidget 和 QDialog 这3种.QMainWindow 是带有菜单栏和工具栏的主窗口类,QDialog 是各种对话框的基类,而它们全部继承自 QWidget.不仅如此,其实所有的窗口部件都继承自 QWidget,如下图所示.这一章会讲解 QWidge.QDialog 和其他一些常用部件类, 而 QMainWindow 将在第5章讲解. 一.基础窗口部件 QWidget…
在99.996%的情况下,我们弄 Qt 应用都会使用 QApplication 类和 QWidget 类,即直接用 Widgets 库中的组件/控件.为了方便开发人员自己造轮子,Qt 也提供了一套基础的 GUI 组件.这些组件位于 Gui 库中. 实际上,Widgets 也是在 Gui 库上实现的,算是官方默认为咱们实现的图形组件库.若是我们自己也想实现一套图形组件库,就得从 Gui 库入手.当然,此行为需要决心.恒心.耐心.信心.专心.勇气.朝气.力气.努力.神力.洪荒之力.毕竟是一项大工程,…
关于Qt中窗口部件的学习 今天开始学习Qt的窗口部件,领略一下Qt的神奇之处,记得2012年的那年冬天,我还学Java呢,现在基本上和Java说再见了,不过对于嵌入式的开发Qt还是举足轻重的,我想趁着假期的时间,好好学习.考研之后发现一个问题,无论当初你学的有多明白,总会忘记,最好的方法就是将他们记录下来,甚至写下你当时的心情,如果有一天你需要了,回过头来看看,是一笔不错的财富. 1. QDialog类对话框 1.1 模态和非模态对话框 对于对话框,有模态(modal)和非模态(modeless…