如何将来自我的 class 的信号连接到 MainWindow class 中的插槽?
How to connect a signal from my class to a slot in the MainWindow class?
我是 Qt 的新手。
我想开发一个 TCP 服务器程序,当有新连接到达时通知用户。
我做了一个widget项目,新增了一个class用于socket编程。在我的class的界面中,有一个名为我的服务器(QTcpserver *myServer)的QTcpserver对象。
我可以像这样将 newConnection() 信号连接到我的 class 插槽:
connect(myServer, SIGNAL(newConnection()), this, SLOT(aConnectionArrived()));
但是,我想将 newConnection() 信号连接到 MainWindow 中的一个插槽 class。
如果你告诉我如何从我的 class 中通过信号和插槽访问 ui,我将不胜感激?
在您的小部件中创建一个新信号并将其连接到您的 TCP 服务器(您可以将一个信号连接到另一个信号):
class MyWidget: public QWidget
{
Q_OBJECT
...
private:
QTcpServer* myServer;
signals:
void newConnectionAccepted();
}
MyWidget::MyWidget(): QWidget()
{
connect(myServer, SIGNAL(newConnection()), this, SIGNAL(newConnectionAccepted()));
}
因此,您可以在主 window:
中创建连接
MainWindow::MainWindow()
{
connect(myWidget, SIGNAL(newConnectionAccepted()), this, SLOT(processNewConnection()));
}
通过这样做,您不会因为将 TCP 服务器对象暴露在小部件之外而违反 SOLID 原则。
我是 Qt 的新手。
我想开发一个 TCP 服务器程序,当有新连接到达时通知用户。
我做了一个widget项目,新增了一个class用于socket编程。在我的class的界面中,有一个名为我的服务器(QTcpserver *myServer)的QTcpserver对象。
我可以像这样将 newConnection() 信号连接到我的 class 插槽:
connect(myServer, SIGNAL(newConnection()), this, SLOT(aConnectionArrived()));
但是,我想将 newConnection() 信号连接到 MainWindow 中的一个插槽 class。
如果你告诉我如何从我的 class 中通过信号和插槽访问 ui,我将不胜感激?
在您的小部件中创建一个新信号并将其连接到您的 TCP 服务器(您可以将一个信号连接到另一个信号):
class MyWidget: public QWidget
{
Q_OBJECT
...
private:
QTcpServer* myServer;
signals:
void newConnectionAccepted();
}
MyWidget::MyWidget(): QWidget()
{
connect(myServer, SIGNAL(newConnection()), this, SIGNAL(newConnectionAccepted()));
}
因此,您可以在主 window:
中创建连接MainWindow::MainWindow()
{
connect(myWidget, SIGNAL(newConnectionAccepted()), this, SLOT(processNewConnection()));
}
通过这样做,您不会因为将 TCP 服务器对象暴露在小部件之外而违反 SOLID 原则。