我有一个 Mfc 应用程序,我想在其中打开一个 Qt 模式窗口,而 Mfc 应用程序仍在后面运行。
要从 Mfc 启动 Qt 应用程序,我知道了如何到那里。此页面创建了一个 Dll,但我的解决方案改为创建一个静态库。
至于创建一个 Qt 模态窗口,后面运行主应用程序,看起来很容易。
我的问题是看起来我无法将这两种解决方案结合起来。
以下代码启动 Qt 窗口,但我强烈怀疑我阻塞了我的主线程并且主线程无法接收事件。
void QtMfcFacade::startDevicesConfigurationWizard(HWND hWnd)
{
QWinWidget win( hWnd );
win.showCentered();
DevicesConfigurationWizard devicesConfigurationWizardUI(&win);
devicesConfigurationWizardUI.exec();
}
exec 函数可能阻塞了主线程
以下解决方案不应阻塞主线程,但 Qt 窗口仅出现几毫秒并消失
void QtMfcFacade::startDevicesConfigurationWizard(HWND hWnd)
{
QWinWidget win( hWnd );
win.showCentered();
DevicesConfigurationWizard devicesConfigurationWizardUI(&win);
devicesConfigurationWizardUI.show();
}
那么,问题是,是否可以使用show函数代替exec函数?
(如果我正在创建一个 Dll 并从我的 Mfc 应用程序的工作线程中调用 Dll,则此方法有效,但我更喜欢使用静态库)