QPointer to MainWindow

Я создаю диалоговое окно и хочу знать, как передать указатель на MainWindow к этому?

Скажем, мне нужен доступ к методу получения MainWindow в моем диалоге.

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;

Это дает мне ошибку: недопустимый static_cast из типа ‘MainWindow *’ для типа ‘QPointer :: QObjectType * {aka QObject *}’

И я не знаю почему.

1

Решение

использование object_cast чтобы привести указатель в тип MainWindow, и поскольку в документации не сказано, что безопасно создавать QPointer с нулевым указателем, вы можете сделать это безопаснее

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

Или альтернативный способ — использовать сигналы и слоты для связи между главным окном и диалогом.

0

Другие решения


По вопросам рекламы [email protected]