c++ - Qt:为什么 connect() 只在主窗口类中起作用?

标签 c++ qt events signals slots

这是创建按钮并分配 onclick 处理程序的简单代码:

auto btn = new QPushButton("CLICK ME");
connect(btn, SIGNAL(clicked()), this, SLOT(btn_Click()));

private slots:
void btn_Click() {
    alert("clicked!");
}

如果在主窗口类中调用,它会正常工作。但是,当我尝试在子窗口中执行此操作时,单击按钮什么也不做。子窗口显示如下:

auto settingsWindow = new SettingsWindow();
settingsWindow->show();

我猜它以某种方式与现在是不同窗口的接收器对象相关联。但是我怎样才能让它发挥作用呢?

最佳答案

为了能够在您自己的类中声明信号/槽,您应该在您的类中包含 Q_OBJECT 指令:

class SettingsWindow {
        Q_OBJECT

        ...
};

关于c++ - Qt:为什么 connect() 只在主窗口类中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10207519/

相关文章:

events - Selectize.js:加载页面时触发的onChange事件

javascript - event.stopPropagation 和 event.preventDefault 有什么区别?

c++ - 更改静态库的 "Dynamic RTL"设置有什么影响?

C++ 成员变量类 Q_PROPERTY 在 QML 中不可用

c++ - QOpenGLWidget 和 glReadPixels 以及深度缓冲区

Qt 5.13.2.0 qwebp.dll 中可能存在恶意软件 Variant.Adware.Kazy.795337

javascript - 当父元素可拖动时防止子元素被拖动

c++ - 在 iOS 中使用 Objective-C 背后的理念是什么?为什么不是 C++?

c++ - 如何解决 Qt Creators 变量 -"<not accessible>"的行为?

c++ - this-> 是否必须从派生类访问 Base<T> 标识符?