在qt中新建了一个名为A的ui窗口,如何在A里调用mainwindow的函数
时间: 2023-06-14 20:05:00 浏览: 96
如果你的 `mainwindow` 是一个单独的窗口,而不是 `A` 窗口的父窗口,你需要在 `A` 的代码中获取 `mainwindow` 的指针,然后调用其函数。可以通过以下代码实现:
```cpp
// 在 A 窗口类中定义指向 mainwindow 的指针
class A : public QDialog
{
Q_OBJECT
public:
explicit A(QWidget *parent = nullptr);
void setMainWindowPointer(QMainWindow *mainWindow); // 设置指针的函数
private:
QMainWindow *m_mainWindow; // 指向 mainwindow 的指针
};
// 在 A 窗口类的实现中设置指向 mainwindow 的指针
void A::setMainWindowPointer(QMainWindow *mainWindow)
{
m_mainWindow = mainWindow;
}
// 在 A 窗口类中调用 mainwindow 的函数
void A::on_button_clicked()
{
if (m_mainWindow) {
m_mainWindow->someFunction(); // 调用 mainwindow 的函数
}
}
```
然后,在 `mainwindow` 中创建 `A` 窗口的实例,并调用 `setMainWindowPointer` 函数将 `mainwindow` 的指针传递给 `A` 窗口。可以通过以下代码实现:
```cpp
// 在 mainwindow 中创建 A 窗口的实例并设置指针
void MainWindow::on_button_clicked()
{
A *a = new A(this);
a->setMainWindowPointer(this); // 将 mainwindow 的指针传递给 A 窗口
a->show();
}
```
这样,当 `A` 窗口中的按钮被点击时,就可以通过 `m_mainWindow` 指针调用 `mainwindow` 的函数了。
阅读全文