我可以将 QPixmap 移动到 QLabel 中吗?我还没有找到任何支持移动语义的成员函数,或者即使在 Qt5 中,某些函数也可以将 QPixmap 移动到 QLabel 中。QLabel 的原始解决方案是复制您传递给函数的 QPixmap。
根据声明
setPixmap(QPixmap const &)
Const& 不会增加引用计数(任何错误?)我认为他们不会共享相同的资源
并且实现看起来更像是复制而不是移动(Qt4.8.3)
void QLabel::setPixmap(const QPixmap &pixmap)
{
Q_D(QLabel);
if (!d->pixmap || d->pixmap->cacheKey() != pixmap.cacheKey()) {
d->clearContents();
d->pixmap = new QPixmap(pixmap);
}
if (d->pixmap->depth() == 1 && !d->pixmap->mask())
d->pixmap->setMask(*((QBitmap *)d->pixmap));
d->updateLabel();
}
如果 d->pixmap 不指向任何东西或它们没有相同的 cacheKey,则 QLabel 将创建 QPixmap 的全新副本。
但我想要的行为是
QPixmap *temp = origin_pixmap;
origin_pixmap = new_pixmap;
temp->release()
或者
std::string A, B;
//.............
A = std::move(B);