如何手动使另一个控件的信号发出?

时间:2010-07-03 21:27:41

标签: c++ qt

我想知道它是否可以通过编码发出一些特定信号。例如,我想发出另一个按钮的点击事件而用户实际上没有点击该按钮..我可以这样做吗?

6 个答案:

答案 0 :(得分:5)

您可以调用其他按钮的click功能。它会发出点击的信号。

答案 1 :(得分:3)

而不是自己发出信号并将其连接到插槽,为什么你不能直接调用插槽?插槽就像其他C ++函数一样,你可以直接调用它。我没有看到您发出预定义信号的任何原因(如clicked())。 直接致电您的广告

答案 2 :(得分:0)

信号在内部实现为C ++保护的成员函数,因此我建议不要这样做。 (它们在Qt 5中是公开的,但它仍然不建议作为一般解决方案。)

答案 3 :(得分:0)

Qt,通过moc,实现emit关键字,允许你通过编码发出信号。

如果您使用的Class没有提供发出某些信号的方法,您可以对其进行子类化,并实现一个自己完成的功能。但我必须说,我从来没有为“正常”信号做过这件事。只有当我在某个类扩展中定义自己的信号时才这样做。

答案 4 :(得分:0)

发出你刚写的信号

发出signalName(参数列表);

#include <QObject>

 class myClass : public QObject
 {
     Q_OBJECT

 public:
     myClass (QObject *parent = 0) : QObject(parent) { }
     void foo();

 signals:
     void mySignal(int param);
 };

void myClass::foo() { emit mySignal(5); }

http://doc.qt.io/qt-4.8/signalsandslots.html

了解详情

您还可以将信号连接到另一个信号,这样您就可以将mysignal连接到按键点击信号,当您的信号发出时,点击的信号也会被发光 http://doc.qt.io/qt-4.8/qobject.html#connect

答案 5 :(得分:0)

如果您为按钮设置操作,您也可以简单地调用要触发的操作。只需使用action_of_the_button->trigger();