Qt 里面的信号(Signal)和槽(Slot)虽然看着像事件,但它实际上是用来在两个对象之间进行通信的.既然是通信,就会有发送者和接收者. 1.信号是发送者,触发时通过特有的关键字"emit"来发出信号. 2.槽是信号的接收者,它实则是一个方法(函数 )成员,当收到信号后会被调用. 为了让C++类能够使用信号和槽机制,必须从 QObject 类派生.QObject 类是 Qt 对象的公共基类.它的第一个作用是让 Qt 对象之形成一株"对象树".当某个 Qt 对象发…
Qt 具备让某个对象的信号与符合要求的槽函数自动建立连接.弄起来也很简单,只要调用这个静态方法即可: QMetaObject::connectSlotsByName(...); connectSlotsByName 方法需要一个参数,此参数的指针指向一个实例,这个实例自身的信号,以及它的子级对象的信号都会自动连接. 不过,在用的时候要注意以下几点,否则 connectSlotsByName 方法是不起作用的. 1.如果类是从某个 QObject 类派生的,比如常见的 QWidget 类,在类的声…
Qt5 UI信号.槽自动连接的控件重名 来源 http://blog.csdn.net/goldenhawking/article/details/51865909 对Qt5稍有熟悉的童鞋都知道信号.槽的自动连接机制.该机制使得qt designer 设计的UI中包含的控件,可以不通过显式connect,直接和cpp中的相应槽相关联.该机制的详细文章见 http://doc.qt.io/qt-5/designer-using-a-ui-file.html#automatic-connection…
先说明一下,本水文老周仅讨论新版的 Qt 6,旧版的 Qt 不讨论. 尽管 Qt 有自己的开发环境,但老周必须说句不装逼的话:真的不好用.说起写代码,当然了,用记事本也能写.但是,有个高逼格的工具,写起来不仅效率高,而且舒服. Qt 应用程序本质上就是 C++ 开发的代码,所以,不用官方工具是没有问题的.老周第一个想到的,不用猜,必是 VS.在 Windows 上,用 VS 也是没问题的. 安装的时候,工作负载可以选"使用C++的桌面开发",这个其实不选也可以的,老周已做过实验,不选这…
一般来说,用C++写 Qt 应用才是正宗的,不过,为了让小学生也能体验 Qt 的开发过程,或者官方为了增加开发者人数,推出了可用 Python 来编程的 Qt 版本.此版本命名比较奇葩,叫 PySide,与 Qt 6 配套的是 PySide 6.当前最新版本是 6.3.2. PySide 的优势在于它是官方维护的,完全是C++开发的.在原有库基础上增加了对应的 .pyd 文件,对 API 做了封装,并由 .pyi 文件进行类型规范.在性能上是不用担心的,但是,这种开发方式用来学习较适合,真要做个…
对Qt5稍有熟悉的童鞋都知道信号.槽的自动连接机制.该机制使得qt designer 设计的UI中包含的控件,可以不通过显式connect,直接和cpp中的相应槽相关联.该机制的详细文章见 http://doc.qt.io/qt-5/designer-using-a-ui-file.html#automatic-connections 简而言之,UI中的一个object name, 可以直接与code中的槽 void on_<object name>_<signal name>(&…
参考链接1:http://blog.csdn.net/skyhawk452/article/details/6121407 参考链接2:http://blog.csdn.net/memory_exception/article/details/50953005 信号与槽可以通过使用手写代码显式的实现关联 ,也可以运用 QMetaObject 类规定的槽 函数命名范式来实现自动关联. 显示关联 class MyWidget : public QWidget { Q_OBJECT public: M…
在正题开始之前,老周照例扯点别的.嗯,咱们扯一下在 VS 2022 下结合 CMake 开发 Qt6 时的环境变量设置问题.在VS Code 中,通够通过 CMake Tools 扩展的配置来设置环境,但在VS 里面,CMake 项目只是一个文件夹,然后通过 .json 文件来配置一些参数,不能像 VS Code 那样设置环境变量. 当然,如果你嫌麻烦,最简单粗暴的方法,就是在系统级或用户级别直配置全局环境变量.这样所有开发工具都能共享这些环境变量.但有时候,你不希望把 Qt 库的路径放上去,因…
上一次水文中,老周所介绍的是编译 Qt 的基础模块-- qtbase.一次性编译所有代码可以一劳永逸,但体积相当大,编译时间较长,CPU负载大发热大,风扇转得猛,电费交得多.因此老周更喜欢分开来编译. qtbase 模块已经能完成一般的 Qt 开发了,毕竟它包含了铁三角-- Core.Gui.Widgets.有这三个硬汉到场,Qt应用就能运行起来.而附加模块是为了特殊需要的,比如 OpenGL.当要用到某模块时再增量编译,这样逼格更高,也省事. 本文老周以编译多媒体模块 qtmultimedia…
前面两篇文章<QML 语言基础>和<Qt Quick 简单教程>中我们介绍了 QML 语言的基本的语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经能够完毕简单的 Qt Quick 应用了.接下来呢,哈.我们要介绍 Qt Quick 中一个灰常灰常重要的主题:事件处理. 这将是比較长长长长的一篇.哦,不还有兴许好几篇--废话少说,还是谈正事儿吧兄弟姐妹们. 本文是作者 Qt Quick 系列文章中的一篇.其他文章在这里: Qt Quick 简单介绍 QML 语言…