Qt - 当一个类中有多个 QTcpSocket 时,我如何知道哪个 QTcpSocket 发出了 readyRead 信号?
Posted
技术标签:
【中文标题】Qt - 当一个类中有多个 QTcpSocket 时,我如何知道哪个 QTcpSocket 发出了 readyRead 信号?【英文标题】:Qt - How do I know which QTcpSocket emitted readyRead signal when there are several QTcpSocket in a class? 【发布时间】:2013-07-03 12:36:50 【问题描述】:class SocketContainer
private:
QTcpSocket* m_sockets[10];
public:
SocketContainer()
for(int i = 0; i < 10; i++)
connect(m_sockets[i], SIGNAL(readyRead()), this, SLOT(onNewData()));
private slots:
onNewData();
我如何知道onNewData()
中哪个套接字发出了readyRead
?
【问题讨论】:
相信你可以使用QObject::sender函数。 【参考方案1】:您可以按照 Kourosh 的建议使用 sender,或者 QSignalMapper 更适合您的需求。
【讨论】:
【参考方案2】:虽然已经回答了,但这里有一个sn-p:
QObject *sigsender=sender();
if (sigsender)
DEBUG << " signal call objn: " << sigsender->objectName() << " clasn: " << sigsender->metaObject()->className();
else
DEBUG << " direct call";
【讨论】:
以上是关于Qt - 当一个类中有多个 QTcpSocket 时,我如何知道哪个 QTcpSocket 发出了 readyRead 信号?的主要内容,如果未能解决你的问题,请参考以下文章
Qt笔记-QTcpSocket跨线程调用(官方推荐方法,非百度烂大街方法)
Qt:当用户关闭它时,在控制台应用程序中检测到 QTcpSocket 断开连接