qtc++如何使主界面a的子界面b的子界面c中的按钮触发主界面事件
时间: 2023-09-14 12:04:43 浏览: 74
在Qt中,可以通过信号(Signal)和槽(Slot)机制来实现子部件(Widget)和父部件之间的交互。可以在子部件中定义一个信号,当按钮被点击时,该信号发射出去,然后在主界面中连接该信号到主界面的槽函数中。
以下是一个示例代码:
在子界面C中定义信号:
```cpp
class SubWidgetC : public QWidget {
Q_OBJECT
signals:
void buttonClicked();
public:
// ...
};
```
在子界面C中,当按钮被点击时,触发该信号:
```cpp
void SubWidgetC::onButtonClicked() {
emit buttonClicked();
}
```
在主界面A中,将子界面C的信号连接到主界面的槽函数中:
```cpp
class MainWindow : public QMainWindow {
Q_OBJECT
public slots:
void onButtonClicked();
public:
// ...
};
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
// ...
SubWidgetC *subWidgetC = new SubWidgetC(this);
connect(subWidgetC, &SubWidgetC::buttonClicked, this, &MainWindow::onButtonClicked);
}
void MainWindow::onButtonClicked() {
// 处理按钮点击事件
}
```
这样,当子界面C中的按钮被点击时,主界面A中的onButtonClicked()函数就会被触发。
阅读全文