QPainter or QLabel is less costly to draw QPixmap
我必须创建一个Icon像素图,我熟悉了两种方法,一种是将像素图设置为o
方法一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Icon::Icon { QLabel iconLab = new QLabel; QLabel iconName = new QLabel; iconLab->setPixmap("mypixmap.png"); iconName->setText("myiconname"); QVBoxLayout *iconLayout = new QVBoxLayout; iconLayout->setMargin(0); iconLayout->addWidget(iconLab, 1, Qt::AlignCenter); iconLayout->addWidget(iconName, 1, Qt::AlignCenter); iconLayout->setSpacing(0); setLayout(iconLayout); setMaximumSize(100,160); setMinimumSize(100,160); } |
方法2
1 2 3 4 5 6 7 8 9 10 11 | Icon::Icon { setMaximumSize(100,160); setMinimumSize(100,160); } Icon::paintEvent(QPaintEvent*) { QPainter painter; painter.drawPixmap(0,0,myPixmap); painter.drawText(0,100,myText) } |
我必须绘制超过100个的图标,这样哪个才有效?
提前致谢,
从理论上讲,QPainter方法将更快,因为可以避免QLabel引入的开销。 在内部QLabel也需要使用QPainter(使用
但是,这种差异是否会使您的应用程序具有更强的响应能力值得怀疑。 我怀疑这种优化是否会引人注目。
我建议首先注意代码的可读性,并选择更容易使用的感觉。
一旦具备了适当的功能并且出现了性能问题,就可以开始进行性能分析,并确定最佳的投入时间和精力。
如果您必须绘制100个以上的图形,这通常意味着您不应使用任何这些解决方案。
真正具有自定义委托的