传递函数指针代替插槽函数
Passing function pointer in place of slot function
在尝试做这样的事情时:
connect(process1, SIGNAL(waitForReadyRead()), this, SLOT(dataReceived_1()));
我有太多的信号处理过程。我已经创建了一个包含所有这些进程(对象(的 QList。
为了简化代码,我想把这个连接放在一个循环中,并通过遍历 processList 来执行这个信号槽连接。
像这样:
for(int i=0; i<procList.length(); ++i){
connect(procList[i], SIGNAL(waitForReadyRead()), this, SLOT(data_rcvd[i]));
}
这里data_rcvd
是一个包含插槽函数的QList~但不幸的是,我们无法在 QList 中添加函数。所以我想知道,是否有可能定义函数指针来完成这个任务???
或者你认为,我创建了一个新的 QProcess 类(extend(并重载函数 waitForReadyRead(( 来发出一个包含此特定信息的指针?
列表可能不包含函数,但可能包含函数指针。所以声明一个函数指针列表。在表达式中,函数指示符隐式转换为指向函数类型的指针。指针是对象。
这是一个使用标准容器std::list
的演示程序。
#include <iostream>
#include <list>
long long sum( int x, int y ) { return ( long long )x + y; }
long long multiply( int x, int y ) { return ( long long )x * y; }
int main()
{
std::list<long long( * )( int, int )> lst = { sum, multiply };
for ( const auto &p : lst ) std::cout << p( 10, 2 ) << 'n';
}
它的输出是
12
20
相关文章:
- 为什么 connect() 函数看不到插槽?
- 在Qt中使用C++Lambda函数作为插槽是否有助于保持库的二进制兼容性?
- 为什么插槽函数即使成功调用也无法插入文本
- 传递函数指针代替插槽函数
- C++ QT:获取指向信号的指针和插槽功能的函数
- 这是在Qt信号和插槽中使用参数调用函数的好方法吗?
- C / QT中lambda函数中的paramater插槽
- 在 for 循环中使用 lambda 函数连接信号插槽
- Qt - 使用λ函数修改先前连接信号的插槽参数
- 通过插槽打印/显示QT函数调用的内容
- 呼叫函数直接与发射信号(QT-信号和插槽)
- 如何调用作为插槽的qt函数
- 从Qt调用C++函数(插槽不起作用)
- Qt 我可以在构造函数中将信号/插槽连接到自身吗?
- 如何在主函数中从插槽中调用 showNormal
- 如何使用新的QObject::连接语法与函数指针将QSslSocket::错误信号连接到插槽
- 为什么我不能从基类插槽Qt调用虚函数
- QTableWidget-QMenu上下文菜单-AddAction插槽不调用函数
- 矢量函数"push_back"不断将值重写到内存中的同一插槽
- 如何将抽象信号连接到接口构造函数中的插槽?