c++ - Qt中如何从外部调用一个信号?

标签 c++ qt signals-slots

我知道如何从信号所在的类内部调用信号:通过使用emit。但是,如果我想从父对象外部调用它怎么办?

我想要这样做的原因是因为给定的 QPushButton 连接到一个插槽,该插槽选择使用 sender() 调用它的按钮。现在我想要调用该插槽的相同功能,但不是在手动单击按钮之后,而是从代码本身内部调用。通常我只是以编程方式调用插槽,但由于 sender() 的使用,这种方式是无效的:直接调用插槽不会给它按钮的 ID。

那么我如何“从外部”要求对象发出其信号之一?也就是说,如何让我的 QPushButton 从代码中发出 clicked() 信号,而不是通过用鼠标单击按钮?

最佳答案

您不能直接从父对象发出信号。

Only the class that defines a signal and its subclasses can emit the signal. (http://qt-project.org/doc/qt-4.8/signalsandslots.html#signals)

您可以在发出信号的 QPushButton emitClicked() 中定义一个方法。然后,您从代码中对 QPushButton 实例调用 emitClicked()

关于c++ - Qt中如何从外部调用一个信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592583/

相关文章:

c++ - std::array 的默认初始化?

c++ - Qimage setPixel with openmp parallel for 不起作用

c++ - 在 C++/Qt 中定义纯虚拟信号是否有效?

qt - Qt中线程间的通信

c++ - 直接调用函数与发出信号(Qt - 信号和槽)

c++ - 为什么它停止并以退出代码 11 结束?

适用于 Windows 的 C++ BLE Central 开发

c++ - QFile/QDataStream 写入现有数据

android - 在 Qt Creator 中配置最终的 apk 名称

c++ - 如何更改其他类而非主窗口类中的应用程序大小?