Я создаю диалоговое окно и хочу знать, как передать указатель на 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 *}’
И я не знаю почему.
использование object_cast чтобы привести указатель в тип MainWindow, и поскольку в документации не сказано, что безопасно создавать QPointer с нулевым указателем, вы можете сделать это безопаснее
MainWindow* ptr = qobject_cast<MainWindow*>(mw_ptr);
if(ptr != 0)
mainwindow = ptr;
Или альтернативный способ — использовать сигналы и слоты для связи между главным окном и диалогом.