我必须创建一个Icon pixmap,这是我熟悉的两种方法,一种是将pixmap设置为o QLabel
并显示它,另一种是使用QPainter
绘制pixmap,即< / p>
方法一
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,
Icon::Icon
{
setMaximumSize(100,160);
setMinimumSize(100,160);
}
Icon::paintEvent(QPaintEvent*)
{
QPainter painter;
painter.drawPixmap(0,0,myPixmap);
painter.drawText(0,100,myText)
}
我必须绘制超过100个图标的数量,以便哪一个有效, 提前谢谢,
答案 0 :(得分:4)
从理论角度来看,QPainter方法会更快,因为QLabel引入的开销可以避免。内部QLabel也需要使用QPainter(使用drawPicture()
)。
然而,这种差异是否会使您的应用程序更具响应性是值得怀疑的。我怀疑这种优化是否会引人注意。
我建议首先考虑代码的可读性,并采取更容易/感觉更好的方法。
一旦您具备了功能并且存在性能问题,您就可以开始进行分析并确定优化投入的时间和精力在哪里。
答案 1 :(得分:1)
如果你必须抽取100多个,这通常意味着你不应该使用任何这些解决方案
最有可能QListView
使用自定义委托和QAbstractListModel
来保存这些图像是您真正需要的(或表格版本)。