Я настраиваю класс менеджера ресурсов для своего приложения. чтобы управлять всем состоянием ресурсов, мне нужно испустить сигнал из конструктора, если не удается поймать ресурс.
На самом деле я хочу испустить сигнал от конструктора производного класса QObject, который зарегистрирован для qml через qmlRegisterType.
это код, который я тестировал на Linux, работающем под MySql и Qt 5.12.2. но сигнал излучения не работает.
myresoureces.cpp ---- мой класс, управляющий ресурсами
MyResource::MyResource(QObject *parent) : QObject(parent)
{
if(!openResource()) {
// qDebug() << "Check Permission of FileSystem For Example.";
emit openResourceFailed("Check Permission of FileSystem For Example.");
}
}
bool MyResource::openResource()
{
// on situation opening resource failed
return false;
}
main.qml ---- использование его в qml
// ...
import My.Company.Core 1.0
// ...
MyResource {
onOpenResourceFailed: {
msgDialog.title = "Open Resource Failed!"
msgDialog.text = error
msgDialog.open()
}
}
MessageDialog {
id: msgDialog
}
// ...
main.cpp ---- где я регистрирую класс
qmlRegisterType<MyResource>("My.Company.Core", 1, 0, "MyResource");
Я ожидаю, что откроется диалог сообщений, но ничего не произошло.