- 信号是只有函数声明、没有函数体的成员函数。槽是拥有完整函数体的普通成员函数,你可以在槽函数中实现各种功能,与普通函数相比并没有区别,例如 quit() 的作用就是退出程序。
- connect() 是 QObject 类的静态成员函数。
- QObject 是 Qt 中所有类的基类,它就像“树根”,从这里派生出了所有其他“树枝”。
- 信号不是事件。当用户点击“取消”按钮时,Qt 会捕获该点击事件,进行预处理,然后发射 clicked() 信号。
-
QObject::connect(&btn, &QPushButton::clicked, &app, &QApplication::quit);
- Q_OBJECT 是 Qt 中的宏,借助它才能实现信号和槽机制,继承 Qt 类时都要在类声明的开头添加 Q_OBJECT。
- 也可不添加 Q_OBJECT,但那将无法实现信号和槽机制,并且有时会出现莫名其妙的错误,所以建议添加该宏。
- slots 是 Qt 关键字,Qt 对C++进行了扩展,增加了一些关键字。
- C++ 本身没有反射机制,QT对C++进行了扩展,实现了反射机制。
- moc 全称是”Meta-Object Compiler”,也就是”元对象编译器“
- moc 全称是”Meta-Object Compiler”,也就是”元对象编译器“。moc 就是一个源代码分析程序,它会读取C++源文件,如果发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个C++源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新文件的名字将由源文件名加上moc_前缀构成,
- 执行了 Ui::Widget 类的 setupUi() 函数,这个函数实现窗口的生成与各种属性的设置、信号与槽的关联。
- 在 ui_widget.h 文件里有一个 namespace 名称为 Ui,里面有一个类 Widget 是用于描述可视化设计的窗体,且与 widget.h 里定义的类同名。在 Widget 类里访问 Ui::Widget 类的成员变量或函数需要通过 Widget 类里的 ui 指针,如同构造函数里执行 ui->setupUi( this) 函数那样。
- 查看 ui_widget.h 文件的内容,发现它主要做了以下的一些工作: 定义了一个类 Ui_Widget,用于封装可视化设计的界面。
- 定义 namespace Ui,并定义一个从Ui_Widget 继承的类Widget。
- Qt 的元对象系统(Meta-Object System)提供了对象之间通信的信号与槽机制、运行时类型信息和动态属性系统。
- QObject::metaObject() 函数返回类关联的元对象,元对象类 QMetaObject 包含了访问元对象的一些接口函数,例如 QMetaObject::className() 函数可在运行时返回类的名称字符串。
QObject *obj = new QPushButton;
obj->metaObject()->className (); //返回"QPushButton"
- QMetaObject::newInstance() 函数创建类的一个新的实例。
- QObject::inherits(const char *className) 函数判断一个对象实例是否是名称为 className 的类或 QObject 的子类的实例
- QObject::setProperty() 和 QObject::property() 函数用于通过属性名称动态设置和获取属性值。
一体机程序开发总结
- QApplication::setFont
设置程序默认字体。
- QFont::setPixelSize
亿像素点设置字体大小。setPointSize 以点数设置字体大小。
2021年04月06日14:25:10
- qmake 命令,把 *.pro 文件转成 makefile
qmake -o Makefile hello.pro
2021年04月13日18:46:38
Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice和QPaintEngine这三个类。其中QPainter用来执行绘图操作;QPaintDevice提供绘图设备,它是一个二维空间的抽象,可以使用QPainter在其上进行绘制;QPaintEngine提供了一些接口,可以用于QPainter在不同的设备上进行绘制。
在绘图系统中由QPainter来完成具体的绘制操作,QPainter类提供了大量高度优化的函数来完成GUI编程所需要的大部分绘制工作。QPainter可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,它还可以用来绘制文本和图片。QPainter可以在继承自QPaintDevice类的任何对象上进行绘制操作。
QPainter一般在一个部件的重绘事件(Paint Event)的处理函数paintEvent()中进行绘制,首先要创建QPainter对象,然后进行图形的绘制,最后销毁QPainter对象。