我正在创建一个对话框窗口并想知道如何将指针传递给它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;
这给了我错误:类型&#39; MainWindow *&#39;中的static_cast无效输入&#39; QPointer :: QObjectType * {aka QObject *}&#39;
我不知道为什么。
答案 0 :(得分:0)
使用object_cast将指针强制转换为MainWindow类型,因为文档没有说使用空指针构造QPointer是安全的,所以你可以做得更安全
MainWindow* ptr = qobject_cast<MainWindow*>(mw_ptr);
if(ptr != 0)
mainwindow = ptr;
或者另一种方法是使用信号和插槽在主窗口和对话框之间进行通信。