我有2類:Qt的信號和槽麻煩
class Server : public QTcpServer
{
Q_OBJECT
public:
Server(QObject * parent = 0 , quint16 port = 1922);
void SendData(QString data);
virtual ~Server();
signals:
void RecieveMessage(QString);
private slots:
void acceptConnection();
void startRead();
void disconnected();
private:
QTcpServer *tcpServer;
QTcpSocket *client;
};
在服務器類
和
class ChessLanTEst : public QMainWindow
{
Q_OBJECT
public:
friend class Server;
friend class Client;
ChessLanTEst(QWidget *parent = 0);
~ChessLanTEst();
private:
Ui::ChessLanTEstClass ui;
Server *server_;
Client *client_;
private slots:
void createGame();
void ShowMessage(QString);
};
我有信號:
void RecieveMessage(QString);
在ChessLanTEst類
我有槽:
void ShowMessage(QString);
,我連它在ChessLanTEst構造:
connect(server_, &Server::RecieveMessage, this, &ChessLanTEst::ShowMessage);
,但我沒有收到這個信號,我不知道爲什麼。
您是否在運行時收到消息? –
檢查'connect'的返回值。確保(用斷點或調試打印)確實發出信號。 – hyde
並確保'server_'是有效的指針,初始化而不是'nullptr'。另外,你確定你正在使用Qt5嗎? – hyde