Я хочу установить родительский элемент собственного диалога QMessageBox
(или любого другого пользовательского класса на основе QDialog
) в окно Qml типа ApplicationWindow
.
С простыми виджетами Qt код выглядиткак это:
class MyClass: public QWidget {
void alertMe() {
QMessageBox::warning(this, ...);
}
};
Теперь я хочу что-то вроде этого:
class MyClass: public QObject {
Q_INVOKABLE void alertMe() {
QMessageBox::warning(PARENT, ...);
}
};
//Qml:
ApplicationWindow {
MyClass {
id: item
}
Button {
onClicked: item.alertMe()
}
}
Один из вариантов - передать nullptr для PARENT, но это центрирует диалоговое окно с предупреждением на экране, а также создает проблемы.в некоторых системах, потому что диалог скрыт за другими окнами.Как я могу получить объект PARENT QWidget
из Qml ApplicationWindow
?
[Update] : Сценарий выглядит следующим образом: основной код Qml выполняется в QQuickWidget
.Здесь я могу использовать QQuickWidget
в качестве родительского для диалогов.Но проблема в том, что код Qml может генерировать новые окна (типа ApplicationWindow
), и родные диалоги должны быть связаны с этими новыми окнами.Возможно, самый простой способ - создать отдельные QQuickWidgets для каждого окна.Я не хочу использовать диалоги Qml из-за проблем с юзабилити. [конец обновления]
С уважением