QT子窗口如何调用父窗口的qmap
时间: 2023-07-19 21:28:37 浏览: 78
如何用qt制作父子窗口界面(附完整源代码)
在Qt中,子窗口想要调用父窗口的QMap,可以通过以下方式实现:
1. 在父窗口中定义QMap,并提供一个公有的访问函数,用于获取QMap。
```c++
class ParentWindow : public QMainWindow
{
public:
ParentWindow(QWidget *parent = nullptr);
QMap<QString, QString>& getMap(); // 获取QMap的函数
private:
QMap<QString, QString> myMap; // QMap定义在父窗口中
};
```
2. 在子窗口中获取父窗口指针,然后通过父窗口指针调用父窗口的getMap()函数获取QMap。
```c++
class ChildWindow : public QDialog
{
public:
ChildWindow(QWidget *parent = nullptr);
private:
void someFunction(); // 在子窗口中调用父窗口QMap的函数
ParentWindow *parentWindow; // 父窗口指针
};
```
```c++
ChildWindow::ChildWindow(QWidget *parent) : QDialog(parent)
{
parentWindow = qobject_cast<ParentWindow*>(parent); // 获取父窗口指针
}
void ChildWindow::someFunction()
{
QMap<QString, QString>& myMap = parentWindow->getMap(); // 调用父窗口的getMap()函数获取QMap
// 使用myMap进行操作
}
```
注意,在获取父窗口指针时,可以使用qobject_cast()函数来获取,因为在Qt中,QWidget的父子关系被管理为一棵树形结构,可以通过qobject_cast()函数来获取指向父窗口的指针。
阅读全文