我们使用QT 5.6版 我们在Qt Widgets上有c ++应用程序。在这个应用程序的一些插件(使用Q_PLUGIN_METADATA和Q_INTERFACES创建)中,我们使用QML: 在一些Widget中我们创建了QQuickWidget
QQuickWidget* quickWidget = new QQuickWidget(this);
使用上下文进行一些操作
QQmlContext* ctxt = quickWidget->rootContext();
并设置来源
quickWidget->setSource(QUrl(QStringLiteral("qrc:/Resources/WebResources/main.qml")));
有时我们会在显示此小部件时出现问题 - 显示黑色矩形。
我们添加了libEGL.dll,libGLESv2.dll,d3dcompiler_47.dll和opengl32sw.dll。
此外,我们尝试为主要QApplication设置Qt :: AA_UseSoftwareOpenGL标志(在QApplication构造之前),但此操作不会给出结果。
稳定的复制我们在Win7的虚拟mashine。
添加RemoteFX 3D视频适配器后,虚拟mashine上的QQuickWidget显示效果不错。但是我们可以通过RemoteFX 3D视频适配器显示QQuickWidget吗? 创建QQuickWidget之后我们在WinDBG中ModLoad: 6ee10000 6ee18000 C:\Users\admin\Desktop\Release\Win32\QtQuick.2\qtquick2plugin.dll
ModLoad: 66c50000 66cfd000 C:\Users\admin\Desktop\Release\Win32\QtQuick\Controls\qtquickcontrolsplugin.dll
ModLoad: 6ee00000 6ee08000 C:\Users\admin\Desktop\Release\Win32\QtQuick\Window.2\windowplugin.dll
ModLoad: 656a0000 65863000 C:\Windows\system32\d3d9.dll
ModLoad: 749b0000 749b9000 C:\Windows\system32\VERSION.dll
ModLoad: 6edf0000 6edf6000 C:\Windows\system32\d3d8thk.dll
ModLoad: 662f0000 663b8000 C:\Windows\system32\opengl32.dll
ModLoad: 6dc80000 6dca2000 C:\Windows\system32\GLU32.dll
ModLoad: 655b0000 65697000 C:\Windows\system32\DDRAW.dll
ModLoad: 6edd0000 6edd6000 C:\Windows\system32\DCIMAN32.dll
ModLoad: 6d7f0000 6d7f7000 C:\Users\admin\Desktop\Release\Win32\libEGL.DLL
ModLoad: 65420000 655ac000 C:\Users\admin\Desktop\Release\Win32\libGLESv2.dll
ModLoad: 650c0000 65416000 C:\Users\admin\Desktop\Release\Win32\d3dcompiler_47.dll
ModLoad: 74550000 745d3000 C:\Windows\system32\dxgi.dll
ModLoad: 66bc0000 66c43000 C:\Windows\system32\d3d11.dll
ModLoad: 75730000 7575d000 C:\Windows\system32\WINTRUST.dll
ModLoad: 64d60000 650b6000 C:\Users\admin\Desktop\Release\Win32\d3dcompiler_47.dll
ModLoad: 74550000 745d3000 C:\Windows\system32\dxgi.dll
ModLoad: 66260000 662e3000 C:\Windows\system32\d3d11.dll
ModLoad: 650c0000 65416000 C:\Users\admin\Desktop\Release\Win32\d3dcompiler_47.dll
QWindowsEGLStaticContext::create: Could not initialize EGL display: error 0x3001
QWindowsEGLStaticContext::create: When using ANGLE, check if d3dcompiler_4x.dll is available
ModLoad: 64530000 65411000 C:\Users\admin\Desktop\Release\Win32\opengl32sw.dll
ModLoad: 75a80000 75aaa000 C:\Windows\system32\imagehlp.dll
ModLoad: 6da80000 6db6b000 C:\Windows\system32\dbghelp.dll
问题出在哪里?
答案 0 :(得分:0)
我在QQuickWidget遇到同样的问题:
QQuickWidget * w = new QQuickWidget(this);
w->setSource(QUrl("qrc:///main.qml"));
w->show();
当我使用QtCreator进行编译时,一切都还可以,但是当我将可执行文件运行到另一台PC(使用英特尔视频卡)时,某些应用程序崩溃了,但是在另一些应用程序崩溃时,它是一个"黑屏&#34 ;。
这是因为,例如,第二台PC有显卡Intel 945.问题在于OpenGL。
Qt Quick需要OpenGL 2.0或更高版本。但是,英特尔945仅支持OpenGL 1.4
所以...我开始使用QQuickView而不是QQuickWidget