《QDebug 2020年2月》

一、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: ""
        }
    }
发布了106 篇原创文章 · 获赞 31 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/gongjianbo1992/article/details/104176998