Как подключить сигнал от моего класса к слоту в классе MainWindow? - PullRequest
0 голосов
/ 07 марта 2019

Я новичок в Qt.

Я хочу разработать серверную программу TCP, которая будет информировать пользователя о каждом новом подключении.

Я создал проект виджета и добавил новый классдля программирования сокетов.В интерфейсе моего класса есть объект QTcpserver, который называется мой сервер (QTcpserver * myServer).

Я могу подключить сигнал newConnection () к слотам моего класса следующим образом:

connect(myServer, SIGNAL(newConnection()), this, SLOT(aConnectionArrived()));

Но я хочу подключить сигнал newConnection () к слоту в классе MainWindow.

Буду признателен, если вы дадите мне знать, как я могу получить доступ к интерфейсу через сигнал и слоты из моего класса?

1 Ответ

0 голосов
/ 07 марта 2019

Создайте новый сигнал в вашем виджете и подключите его к вашему 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()));
}

Делая это, вы не нарушаете принципы SOLID, выставляя объект TCP-сервера за пределы виджета.

...