Ale*_*lex 0 c++ events qt signals slots
这是一个简单的代码,它创建一个按钮并分配一个onclick处理程序:
auto btn = new QPushButton("CLICK ME");
connect(btn, SIGNAL(clicked()), this, SLOT(btn_Click()));
private slots:
void btn_Click() {
alert("clicked!");
}
Run Code Online (Sandbox Code Playgroud)
如果在主窗口类中调用它,它应该工作.但是,当我尝试在子窗口中执行此操作时,单击该按钮不会执行任何操作.子窗口如下所示:
auto settingsWindow = new SettingsWindow();
settingsWindow->show();
Run Code Online (Sandbox Code Playgroud)
我猜它以某种方式与接收器对象连接,接收器对象现在是一个不同的窗口.但是我怎样才能让它发挥作用呢?
小智 5
为了能够在您自己的类中声明信号/槽,您应该在您的类中包含Q_OBJECT指令:
class SettingsWindow {
Q_OBJECT
...
};
Run Code Online (Sandbox Code Playgroud)