窗口 class 头文件是这么写的:
Q_DECLARE_METATYPE(std::string)
class A: public QMainWindow
{
Q_OBJECT
A()
{
qRegisterMetaType<std::string>("std::string");
QObject::connect(
this, SIGNAL(tunnel::add_item_into_table_signal(std::string, std::string, std::string)),
this, SLOT(tunnel::add_item_into_table(std::string, std::string, std::string))
);
}
signals:
// 这个函数的实现是由 Qmake 生成的,我能调试单步步进进去,看到实现里的代码跑到了
void add_item_into_table_signal(std::string ip, std::string port, std::string remark);
public slots:
void add_item_into_table(std::string ip, std::string port, std::string remark)
{
DebugBreak(); // 这里跑不到
}
}
已经搞了一天了,我 emit 其他没有参数的信号函数都能跑到 slots,但是这个传了参数的函数就是跑不到 slots。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.