Qt5比qt4慢,用于在TabWidget中绘制许多像素图
Qt5 more slow than qt4 for draw many pixmaps in TabWidget
我有一个小部件,里面添加了300个像素图。
MyWidget::MyWidget( QWidget *parent )
{
setParent(parent);
FlowLayout *flowLayout = new FlowLayout(this, 2,2,2);
setLayout(flowLayout);
QPixmap* cupcakes = new QPixmap("Resources/Icons/pimpCupcakes.png");
TilePixmap* tilePximap = new TilePixmap(cupcakes, 0);
m_buttonGroup = new QButtonGroup(this);
int id = 0;
for(int i=0; i<300; ++i)
{
TilesetButton* buttonTmp = new TilesetButton(this, tilePximap);
m_buttonGroup->addButton(buttonTmp, id);
flowLayout->addWidget(buttonTmp);
id++;
}
}
我在QTabWidget中有这样的小部件:
ui.tabWidget->addTab(myWidget, name);
我用另一个小部件进行此操作
ui.tabWidget->addTab(myWidget2, name);
在qt4.8中,创建(和第一次绘制)大约需要4秒并且在那之后在接线片1和2之间的切换是瞬时的。
在qt5中,创建(和第一次绘制)大约需要4秒(与qt4.8类似)但在那之后,从我点击选项卡到信号"currentChanged(int)"出现,切换选项卡总是需要4秒。
与qt4相比,Qt5是否需要添加一些缓存配置?
(项目是相同的,只是Qt版本不同)
编辑:我不使用pixmap做同样的测试,只使用QPushButton*和上面的简单文本。同样的问题。我的clic和tab开关之间有3/4秒的延迟。
我查看了自qt4.8以来tabWidget代码是否发生了变化,但没有发现任何可能是原因的内容。
切换到QGLWidget
可以显著提高性能。Qt中不同的"油漆设备"具有不同的性能,如本问题所示,最快的解决方案是使用QGLWidget
和QGLFramebufferObject
。
另外,我认为不需要setParent(parent)
,QObject
负责处理,QWidget
继承QObject
。
此外,虽然不相关,但正确的术语应该是"较慢",而不是"更慢"。
祝你好运!
相关文章:
- 在混合代码库中将C转换为C++时出现许多包含错误
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 函数在许多数字上转换为基数 1 时减去 2?
- SFML 文本未绘制在窗口上
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 如何在快板的屏幕中显示子位图的绘制?
- 我想生成许多矩阵并用随机数填充它
- 使用Qt在图片上绘制许多标记
- 如何更快地绘制许多带纹理的四边形,并保留 glScissor(或类似的东西)
- 在 OpenGL 中快速绘制许多相同的对象
- Qt5比qt4慢,用于在TabWidget中绘制许多像素图
- 绘制在wxPanel或添加许多wxControls