1

我正在创建一个对话框窗口并想知道如何将指针传递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 *}'的无效静态转换

我不知道为什么。

4

1 回答 1

0

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

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

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

于 2015-02-08T09:22:12.173 回答