这是创建按钮并分配 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/