繁体   English   中英

Qt c ++信号槽无法正常工作

[英]Qt c++ signal slots does not work properly

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM