Qt c++信号槽不能正常工作

Qt c++ signal slots does not work properly

本文关键字:工作 常工作 c++ 信号 不能 Qt      更新时间:2023-10-16

我的代码有一个奇怪的行为:

我想设置一个信号槽连接。当我没有任何参数时,它工作得很好。但是当我使用参数时,即使是像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 ";    }

您不应该将参数名称传递到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)

DiagramClassThisClass替换为合适的类名