У меня есть 2 класса: один поддерживает некоторый цикл (по крайней мере, в течение 2-3 минут и унаследован от QObject), а другой отображает диалоговое окно прогресса (унаследовано от QDialog). Я хочу запустить цикл, как только появится диалоговое окно. Мое первое решение было:
int DialogClass::exec()
{
QTimer::singleShot(0, LoopClassPointer, SLOT(start()));
return __super::exec();
}
Есть проблема с выбрасыванием исключений из слотов. поэтому я рассматривал возможность сделать публичный слот start()
просто публичной функцией. Но теперь я не знаю, как заставить его работать хорошо. Такие вещи:
int DialogClass::exec()
{
LoopClassPointer->start();
QApplication::processEvents();
return __super::exec();
}
не помогай. Диалог не появляется. Есть ли общий подход к такого рода ситуациям?
некоторые детали, согласно вопросам:
Мне приходится работать с системой со своими стилями, поэтому у нас общий подход в создании любых диалогов: наследовать их от класса стилей, который наследуется от QDialog.
мой 'LoopClassPointer' - это экспортированный класс из отдельной dll (в нем нет поддержки пользовательского интерфейса).
У меня есть кнопка «Пуск» в основном приложении, которая связана со слотом, который создает диалоговое окно прогресса и «LoopClassPointer». на данный момент я отправляю экземпляр LoopClassPointer в диалоговом окне и не хочу вносить существенные изменения в архитектуру.