gpt4 book ai didi

c++ - 指向主窗口的 QPointer

转载 作者:太空宇宙 更新时间:2023-11-04 13:39:13 24 4
gpt4 key购买 nike

我正在创建一个对话框窗口,想知道如何将指向 MainWindow 的指针传递给它?

例如,我需要从对话框中的 MainWindow 访问一个 getter 方法。

MainWindow 声明直接来自向导:

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

在我的dialog.h中:

QPointer <MainWindow> mainwindow;

在构造函数中:

MyDialog::MyDialog(MainWindow *mw_ptr, QWidget *parent) :
QDialog(parent),
ui(new Ui::SceneDialog)
..
mainwindow = mw_ptr;

这给了我错误:从类型 'MainWindow*' 到类型 'QPointer::QObjectType* {aka QObject*}' 的无效 static_cast

我也不知道为什么。

最佳答案

使用object_cast将指针转换为 MainWindow 的类型,并且由于文档并未说明使用空指针构造 QPointer 是安全的,因此您可以更安全地执行此操作

MainWindow* ptr = qobject_cast<MainWindow*>(mw_ptr);
if(ptr != 0)
mainwindow = ptr;

或者另一种方法是使用信号和槽在主窗口和对话框之间进行通信。

关于c++ - 指向主窗口的 QPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com