【发布时间】:2014-06-06 13:55:06
【问题描述】:
我尝试通过QTcpServer 类的newConnection() 信号调用我类的插槽。 connect() 函数返回true,但槽没有被执行。
这是我做的:
class server : QObject
{
Q_OBJECT
public:
server();
QTcpServer *srv;
void run();
public slots:
void handleClient();
}
绑定槽:
void server::run()
{
srv = new QTcpServer();
bool status = connect(srv, SIGNAL(newConnection()), this, SLOT(handleClient()));
// status contains true now
srv->listen(QHostAddress::Any, port);
}
槽体:
void server::handleClient()
{
/* This code is not being executed */
qDebug() << "zxc";
QMessageBox msg;
msg.setText("zxc");
msg.exec();
}
为什么它不起作用?
【问题讨论】:
-
看起来不错。将 Q_OBJECT 宏添加到您的类后,您是否调用了 qmake?
-
查看
listen的返回值,如果返回的是false,请将errorString()中的字符串添加到问题中。 -
@ValentinHeinitz,是的,我做了这个。
-
@skyhisi,它返回true。
-
您确定连接到服务器吗?如何?端口号应该与打开的端口号相对应,顺便说一句。
标签: qt signals-slots qtcpserver