2015-06-13 80 views
9

我正在开发一个简单的QML应用程序,我注意到,例如,调整窗口大小并移动QML窗口会产生丑陋的闪烁。QML窗口大小调整/移动闪烁

因此,我创建2个测试应用程序以示区别:

QWidgets:

enter image description here

QML:

enter image description here

正如你可以见T他QML版本的应用程序闪烁非常难看,而QtWidgets一个是干净的。现在,当您的用户界面变得复杂时,这会变得非常难看。

您对此有任何了解吗?这是一个错误?是否有解决此问题的解决方法?

+0

您使用哪个视频卡? – Milovidov

+0

@Milovidov我正在使用集成在Intel Core i5-3360M中的集成Intel HD Graphics 4000。 –

+3

英特尔在OpenGL实现方面存在问题。尝试在没有OpenGL的情况下获取或编译qt。在这种情况下,Qt Quick将绘制为原生小部件,例如qt小部件解决方案。 – Milovidov

回答

3

你可以试试这个:

int main(int argc, char* argv[]) { 
QCoreApplication::setAttribute(Qt::AA_UseOpenGLES); 
or 
QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL); 

第一个选项使用OpenGl2DirecX角度库(如谷歌浏览器)

第二个由软件使用OpenGL模拟...对于小程序的工作非常好,与Windows XP等旧版操作系统完全兼容。

注意:您可以使用Qt 5.7和新Qtquick.Controls 2.0试试...进行更好的... https://blog.qt.io/blog/2016/06/10/qt-quick-controls-2-0-a-new-beginning/

+0

尝试在我的Windows 7 PC上使用Qt 5.6.2和Intel Graphics 4000.使用Qt :: AA_UseOpenGLES表现更好!谢谢! – mrAlmond

1

就我而言,我通过添加下一个标志解决了这个:

QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software); 

但是这会增加其他渲染问题。或不。