一、Qt Widgets 问题交流
1.QOpenGLWidget在非可见状态下调用glDeleteXXX时异常结束
今天遇到了问题就是,我把QOpenGLWidget放在了QTabWidget中,当OpenGL组件没有在显示页的时候我关闭程序,那么就会卡在组件的析构函数释放资源的语句中:
glDeleteVertexArrays(1, &_VAO);
glDeleteBuffers(1, &_VBO);
glDeleteBuffers(1, &_EBO);
奇怪的是用OpenGL的函数会卡住,但是用Qt封装的类就不会:
makeCurrent();
_vbo.destroy();
_ebo.destroy();
_vao.destroy();
delete _texture1;
delete _texture2;
doneCurrent();
开始以为和 makeCurrent(); 切换上下文有关 ,但是试了下还是不行,索性先把OpenGL方式的释放语句注释了。
二、Qt Quick 问题交流
1.ListView横向滚动条不出来
ListView派生自Flickable,而他有一个flickable的设置,默认时根据方向来的。此外ListView竖向时,contentWidth默认为-1,也需要设置下。所以我们应该这样写(即加上前面两句设置):
ListView{
//竖向时默认-1
contentWidth: 500
//Flickable默认Flickable.AutoFlickDirection
flickableDirection: Flickable.AutoFlickIfNeeded
//orientation: Qt.Vertical
//boundsBehavior: Flickable.StopAtBounds
//model: 20
//spacing: 5
//delegate:
ScrollBar.vertical: ScrollBar{
}
ScrollBar.horizontal: ScrollBar{
}
}
2.Loader加载的ListView已经设置了focus但还是不能用按键切换currentItem
一般ListView在设置focus为true后才能用键盘方向键进行切换选中项,当把ListView放到Loader后我发现按键没效果了。将Loader的focus设置为true之后,又可以正常切换了。
3.Layout中的Image保持原比例
RowLayout{
anchors.fill: parent
Image {
Layout.fillHeight: true
Layout.preferredWidth:sourceSize.width/sourceSize.height*height
source: ""
}
}