我是Qt新手。
我想开发一个TCP服务器程序,每当新的连接到达时通知用户。
我创建了一个小部件项目,并添加了一个用于套接字编程的新类。在我的类的接口中,有一个称为我的服务器的QTcpserver对象(QTcpserver * myServer)。
我可以将newConnection()信号连接到班级的插槽上,如下所示:
connect(myServer, SIGNAL(newConnection()), this, SLOT(aConnectionArrived()));
但是,我想将newConnection()信号连接到MainWindow类中的插槽。
如果您让我知道如何通过班上的信号和插槽访问ui,我将不胜感激?
答案 0 :(得分:0)
在小部件中创建一个新信号并将其连接到TCP服务器(您可以将信号连接到另一个):
class MyWidget: public QWidget
{
Q_OBJECT
...
private:
QTcpServer* myServer;
signals:
void newConnectionAccepted();
}
MyWidget::MyWidget(): QWidget()
{
connect(myServer, SIGNAL(newConnection()), this, SIGNAL(newConnectionAccepted()));
}
因此,您可以在主窗口中创建连接:
MainWindow::MainWindow()
{
connect(myWidget, SIGNAL(newConnectionAccepted()), this, SLOT(processNewConnection()));
}
这样做,您不会通过将TCP服务器对象暴露在小部件之外而违反SOLID原则。