Qt c++ 信号槽不能正常工作
Posted
技术标签:
【中文标题】Qt c++ 信号槽不能正常工作【英文标题】:Qt c++ signal slots does not work properly 【发布时间】:2016-10-24 14:24:28 【问题描述】:我的代码有一个奇怪的行为:
我想设置一个信号槽连接。当我没有任何参数时,它可以正常工作。但是当我使用像 int 这样简单的参数时,我的连接不起作用。 有人知道为什么会这样吗?
谢谢。
这行得通:
Chart.h
void signalForUI();
Chart.cpp
emit signalForUI();
Userinterface.h
public slots:
void UI_schreibtWas();
Userinterface.cpp
connect( ui.Diagram , SIGNAL( signalForUI() ),
this ,SLOT (UI_schreibtWas())) ;
...
void UserInterface::UI_schreibtWas()
qDebug() << "ich schreibe was- ohne ";
这不是:
Chart.h
void signalForUI(const int &X_send);
Chart.cpp
emit signalForUI(5);
Userinterface.h
public slots:
void UI_schreibtWas(const int &X_send);
Userinterface.cpp
connect( ui.Diagram , SIGNAL( signalForUI(const int &X_send) ),
this ,SLOT (UI_schreibtWas(const int &X_send))) ;
...
void UserInterface::UI_schreibtWas(const int &X_send)
qDebug() << "ich schreibe was - int ";
【问题讨论】:
删除连接中的X_send
。只需使用参数类型。
所以把connect( ui.Diagram , SIGNAL( signalForUI(const int &X_send) ), this ,SLOT (UI_schreibtWas(const int &X_send)))
变成connect( ui.Diagram , SIGNAL( signalForUI(const int &) ), this ,SLOT (UI_schreibtWas(const int &))) ;
【参考方案1】:
您不应该将参数名称传递到connect
的信号/槽定义中。
connect(ui.Diagram, SIGNAL(signalForUI(const int&)),
this, SLOT(UI_schreibtWas(const int&)));
但是你应该使用 Qt 5 的语法来连接,它不使用宏并且允许你在编译时捕获这样的错误:
connect(ui.Diagram, &DiagramClass::signalForUI, this, &ThisClass::UI_schreibtWas)
将DiagramClass
和ThisClass
替换为适当的类名。
【讨论】:
以上是关于Qt c++ 信号槽不能正常工作的主要内容,如果未能解决你的问题,请参考以下文章