У меня проблемы с отображением модального диалогового окна Qt при запуске приложения Qt из приложения MFC.В частности, экземпляр QProgressDialog не будет отображаться в приложении MFC, когда я установил для его родителя экземпляр QWinWidget.Вот моя проблема более подробно ...
Мое приложение MFC должно передать много данных в приложение Qt, которое является DLL.Приложение Qt включает в свой класс класс ProgressDlg, который за кулисами реализуется с использованием QProgressDialog.Это диалоговое окно должно быть создано и обновлено до инициализации цикла событий приложения Qt, чтобы приложение MFC могло обновлять свой прогресс (справка QApplication :: exec () говорит, что это возможно с модальными виджетами).
Без настройкибазового родителя QProgressDialog, индикатор выполнения обновляется, как и следовало ожидать, и диалоговое окно остается отзывчивым во время передачи, но я могу продолжать взаимодействовать с приложением MFC.
Поэтому я попытался установить среду миграции Qt / MFCи установка родителя QProgressDialog в QWinWidget:
void ProgressDlg::SetParent(HWND hParentWnd)
{
QWinWidget* w = new QWinWidget(hParentWnd);
m_impl->setParent(w);
}
(где m_impl наследуется от QProgressDialog.)
А затем добавление вызывающего кода на стороне MFC для создания диалога:
HWND hWnd = FindWindow(NULL, "ABC");
if(hWnd)
{
ProgressDlg dlg;
dlg.SetParent(hWnd);
//...
dlg.SetValue(0);
//...
}
Однако при установке родителя QProgressDialog больше не отображается.(Я получил дескриптор, используя :: FindWindow, передавая Имя окна, чтобы еще больше усложнить сценарий, мое приложение MFC на самом деле представляет собой подключаемый модуль DLL для стороннего исполняемого файла.)
Вся помощь приветствуется.Спасибо.