我正在阅读《信号与槽》| Qt Core 5.4,他们剪掉了以下代码。
#include <QObject>
class Counter : public QObject
{
Q_OBJECT
public:
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
private:
int m_value;
};
Run Code Online (Sandbox Code Playgroud)
我以前见过private、public、 ,protected但从未见过这样的事情。
public slots:整体和可见性修饰符是怎么回事signals:(这就是它们的名字)?
他们的意思是什么?他们在标准中的什么地方谈论这个?
我什么时候可以/应该在我自己的代码中使用这些?
slots signals只需评估为空字符串或修饰符,它们是通过包含隐式定义的QObject.h。这些只是 Qt moc(元对象编译器)的标记。Q_OBJECT正在扩展到一些通用的 Qt 类接口。
将从moc您的标头生成代码,并通过这些宏您提供额外的信息,例如“这些方法是插槽”或“这将是一个 Qt 化的类”
您应该只在 Qt 项目中使用它们,并且在您开发一个“成为”并处理 Qt 对象的类的情况下。例如您自己的 Qt-Widget 或任何应该能够发送/接收信号的对象。
您不会在标准中找到有关这些宏的任何内容,因为它们不是标准的一部分。它只是 Qt 框架的扩展,只有在包含适当的 Qt 头文件时才能编译您的类。
| 归档时间: |
|
| 查看次数: |
669 次 |
| 最近记录: |