给个具体例子,父窗口是一个mainwindow,通过点击按钮显示子窗口dialog,子窗口里面有个按钮,点击可以使用父窗口的funa函数
时间: 2024-11-04 14:13:30 浏览: 25
好的,让我们来看一个具体的例子,假设我们正在使用Qt C++编写一个程序。首先,我们需要创建一个主窗口`MainWindow`,在这个窗口中有一个QPushButton(按钮),点击后会弹出一个`Dialog`子窗口:
```cpp
// MainWindow.h
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
void showDialog();
private slots:
void on_pushButton_clicked();
};
```
```cpp
// MainWindow.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
QPushButton *button = new QPushButton("显示对话框", this);
connect(button, &QPushButton::clicked, this, &MainWindow::showDialog);
// ... 其他窗体设置...
}
void MainWindow::showDialog() {
Dialog dialog(this); // 创建并显示子窗口
dialog.show();
}
```
然后在子窗口`Dialog`中,我们也有一个QPushButton,点击后需要调用`MainWindow`中的`funa()`函数:
```cpp
// Dialog.h
class Dialog : public QDialog {
Q_OBJECT
public:
explicit Dialog(MainWindow *parent = nullptr);
private slots:
void on_pushButton_clicked();
void parentFunctionCall();
private:
MainWindow *parent;
};
```
```cpp
// Dialog.cpp
Dialog::Dialog(MainWindow *parent) : QDialog(parent), parent(parent) {
QPushButton *childButton = new QPushButton("调用父函数", this);
connect(childButton, &QPushButton::clicked, this, &Dialog::parentFunctionCall);
// ... 其他窗口设置...
}
void Dialog::on_pushButton_clicked() {
parent->funa(); // 在这里调用父窗口的funa函数
}
```
当你运行这个程序,点击`MainWindow`的按钮会弹出`Dialog`,再点击`Dialog`的按钮,会执行`parentFunctionCall()`,从而间接调用了`funa()`函数。
阅读全文