首页 > 编程知识 正文

qt信号与槽一对一还是一对多,函数信号发生器输出频率

时间:2023-05-04 19:52:56 阅读:166612 作者:4982

http://www.Sina.com/APP场景

想法的原理

项目案例

项目源

开发环境

对于APP场景,在创建摄影机程序时使用了摄影机回调函数。 此回调函数是一个静态成员函数,我们发现静态成员函数在需要发送信号时直接发送信号会有问题。

文章目录如下图:

思路创建新类,静态函数发送信号,在新类中接收,发送该信号。

项目案例特意写了案例。 在ToolA类中,静态函数发送信号,主窗口接收。 如下所示。

ToolA.h

# ifndeftoola _ h # definetoola _ h # includeqobjectclasstoola : publicqobject { q _ object public 3360 explicitttoola } stattiola //静态函数从此函数发射信号private : statictoola * mytoola; //定义静态ToolA类signals: void SigDeliverMess (); //实际发出的信号void SigDeliverMessStatic (; //内部信号是静态函数调用private slots 3360 voidslotdelivermesstatic (; //内部插槽用于响应内部信号; #endif //TOOLA_H ToolA.cpp

请注意,通过构造函数为静态ToolA类指定this,并将内部信号与插槽相关联

# include ' toola.h ' # includeqdebugtoola * toola :3360 mytoola=nullptr; //静态ToolA类amytoolatoola : toola (q object * parent ) : q object (parent ) ) { mytoola=this; connect(this,toola : sigdelivermessstatic,this,toola :3360 slotdelivermesstatic ); //内部信号和插槽关联(}void ToolA:Funcoo )//静态函数为信号qDebug ) ) ' ToolA sent DeliverMess ); emitmytoolasigdelivermessstatic; //发送内部信号} voidtoola :3360 slotdelivermessstatic () { emit mytoola-SigDeliverMess; //传出信号} MainWindow.h

# ifndef main window _ h # define main window _ h # includeqmainwindow # include ' toola.h ' Qt _ begin _ namespace namespace Qt _ end _ namespaceclassmainwindow : publicqmainwindow { q _ object public 3360 main window (q widget * parent=nullptr~mm private : ui :主窗口* ui; ToolA *m_toola; private slots : voidslotdelivermess (; (; # endif//main window _ hmain window.CPP

# include ' main window.h ' # include ' ui _ main window.h ' # includeqdebugmainwindow : main window (q widget * pare connect(m_Toola,ToolA:SigDeliverMess,this,main window :3360 slotdelivermess ); 调用//Toola静态方法m_toola-Funcoo (将//Toola的信号与主窗口的插槽相关联); }主窗口:3360至主窗口() { delete ui; } void main window : slotdelivermess ((收到来自/toola的信号的qDebug ) ) ' MainWindow received DeliverMess ); }项目源项目Git地址: lizhifun/QtStaticSignal

开发环境Author:Lizhifun

操作系统: windows 10家庭中文版

计算机: microsoftvisualccompiler 15.9.28307.1259 (amd64 ) )。

kit:desktop Qt 5.14.2 msvc 201764 bit

Qt Creator:4.11.1

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。