我正在创建一个对话框窗口,并想知道如何传递指向它的MainWindow指针?
比如说,我需要访问对话框中的MainWindow中的getter方法。
MainWindow声明直接来自向导:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();在我的对话中:
QPointer <MainWindow> mainwindow;在构造函数中:
MyDialog::MyDialog(MainWindow *mw_ptr, QWidget *parent) :
QDialog(parent),
ui(new Ui::SceneDialog)
..
mainwindow = mw_ptr;这给出了错误:从类型'MainWindow*‘到键入'QPointer::QObjectType* {又名QObject*}’的无效static_cast。
我也不知道为什么。
发布于 2015-02-08 09:22:12
使用投射将指针转换为MainWindow类型,而且由于文档并不表示使用空指针构造QPointer是安全的,所以可以更安全地执行此操作
MainWindow* ptr = qobject_cast<MainWindow*>(mw_ptr);
if(ptr != 0)
mainwindow = ptr;或者另一种方法是使用信号和插槽在主窗口和对话框之间进行通信。
https://stackoverflow.com/questions/28391779
复制相似问题