Qt的信号本质是函数,且默认也只能为公有函数(这样可以在任何地方进行信号发送)
前置条件
Qt的信号支持需要Qt的元对象系统的支持,元对象系统需要一下条件
- 类必须继承与QObject
- 类内必须私有声明Q_OBJECT宏
- 需有元对象编译器(moc)
声明和实现
在我们定义的元对象类中可以进行信号的声明,默认形式为 :
void mySignal(paramterLists);//返回值只能是void
注意我们代码内只能进行信号的声明,不能写定义。定义是使用元对象系统自动生成的。
当cpp文件编译时,若监测到类的声明中包含Q_OBJECT宏,就会使用元对象编译器创建一个新的以moc_开头的cpp源文件,该源文件会参与到编译和链接中,该源文件内部会有信号的实现。文章来源:https://www.toymoban.com/news/detail-803481.html
例如下面的函数,就是自动生成的文件moc_myTest.cpp中的信号定义。文章来源地址https://www.toymoban.com/news/detail-803481.html
void PlotsPanel::show_a_text_message(QString _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 6, _a);
}
到了这里,关于Qt:信号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!