【问题标题】:How to use static slot function in Qt?如何在 Qt 中使用静态插槽功能?
【发布时间】:2018-01-09 08:58:37
【问题描述】:

我有这个代码 sn-p:

class Server{
public slot:
    static void readMessage();
};

// somewhere in the main code...
connect(tcpsocket, &QTcpSocket::readyRead, Server::readMessage);

错误:没有匹配的函数调用 'QObject::connect(const Object*&, void (QIODevice::&)(), const Object&, void (Server::*&)(), Qt::ConnectionType)' return connect(sender, signal, sender, slot, Qt::DirectConnection);

我不知道该怎么处理。

【问题讨论】:

  • 也许这会有所帮助:stackoverflow.com/a/9428213/6165833
  • 您只能在 Qt5 中执行此操作。您使用哪个版本的 Qt?
  • 我用Qt_5_9_1
  • 这里为什么需要“static”修饰符?
  • 这个语法有效:QObject::connect(tcpsocket, &QTcpSocket::readyRead, &Server::readMessage);

标签: c++ qt


【解决方案1】:

试试这个:

connect( tcpsocket, &QTcpSocket::readyRead, [](){ Server::readMessage(); });

注意:这将需要 C++11 编译器功能。

【讨论】:

  • lamndas不是必须的,直接用即可:QObject::connect(tcpsocket, &QTcpSocket::readyRead, &Server::readMessage);
  • @eyllanesc:确实,我只是在提供另一种写法。
  • @eyllanesc:我同意。
猜你喜欢
  • 2021-04-16
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多