我的代码有一种奇怪的行为:
我想设置一个信号槽连接。当我没有任何参数时它工作正常。但是,当我使用参数时,即使像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 "; }
答案 0 :(得分:3)
您不应该将参数名称传递给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
替换为适当的类名。