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;
Или альтернативный способ - использовать сигналы и слоты для связи между главным окном и диалогом.