У меня есть приложение qt quick 2, у меня есть базовый класс для моих классов c ++
class ManagerEngine : public QObject
{
Q_OBJECT
public:
explicit ManagerEngine(QObject *parent = nullptr);
bool isProcessing();
void setIsProcssing(bool isProcessing);
signals:
void isProcessingChanged(bool isProcessing);
private:
bool m_IsProccessing;
};
У меня есть много классов, унаследованных от класса выше
class BookManager : public ManagerEngine
{
};
void BookManager::getList(bool refreshList){
setIsProcssing(true);
//get data from server
setIsProcssing(false);
}
Теперь в theaseклассы, которые я хочу показать BusyIndicator
, когда метод получает данные с сервера.
BookPage.qml
BookManager{
id: bm
onIsProcessingChanged: {
busyIndicator.visible=isProcessing; // busyIndicator is in main.qml
}
}
CategoryPage.qml
CategoryManager{
id: cm
onIsProcessingChanged: {
busyIndicator.visible=isProcessing;
}
}
QuestionPage.qml
QuestionManager{
id: qm
onIsProcessingChanged: {
busyIndicator.visible=isProcessing;
}
}
//I have many class like : login signup and ... inherited from base class
main.qml
BusyIndicator{
id:busyIndicator
}
Все работает нормально вBookPage.qml
и ... (выше) и на странице thease будет отображаться busyIndicator. Но я хочу сделать это вовремя.
Я попробовал это: я использую базовый класс ManagerEngine
для отображения BusyIndicator
Я хочу отобразить busyIndicator, как показано ниже. (I Объявлен базовый класс на главной странице. Теперь, если я открою BookPage.qml для отображения списка книг, теперь busyIndicator должен быть видимым
main.qml
ManagerEngine{
id: me
onIsProcessingChanged: {
progressIndicator.visible=isProcessing;
}
}
BusyIndicator{
id:busyIndicator
}
Но это не работает. Есть еще один способ сделать эту работу (например, можно ли использовать статическое ключевое слово)