在 QListWidget 中旋转 QImage
Rotate QImage in QListWidget
有一个小应用程序,在 QListWidget 中使用此功能显示许多 QImage 和文本:
void TileDisplay::DisplayTiles()
{
for(int i = 0; i < m_tiles.size(); i++) {
QListWidgetItem *item = new QListWidgetItem("Tile " + QString::number(i+1), ui->listWidget);
item->setData(Qt::DecorationRole, m_tiles[i].scaled(64, 64, Qt::IgnoreAspectRatio, Qt::FastTransformation));
}
}
我正在寻找一种解决方案,其中 QImage 使用此功能围绕其中心旋转:
void TileDisplay::RotateImage(int degree)
{
if(GetTiles().size() > 0) {
QImage *tileToRotate = GetCurrentTile();
if(tileToRotate != nullptr) {
QTransform rotate;
rotate.rotate(degree);
tileToRotate->transformed(rotate);
DisplayTiles();
}
}
}
运行没问题,但是图片没有旋转。
任何帮助表示赞赏。
来自 documentation QImage::transformed
成员函数的签名是...
QImage QImage::transformed(const QTransform &matrix, Qt::TransformationMode mode) const;
因此您需要利用返回的 QImage
。尝试...
*tileToRotate = tileToRotate->transformed(rotate);
有一个小应用程序,在 QListWidget 中使用此功能显示许多 QImage 和文本:
void TileDisplay::DisplayTiles()
{
for(int i = 0; i < m_tiles.size(); i++) {
QListWidgetItem *item = new QListWidgetItem("Tile " + QString::number(i+1), ui->listWidget);
item->setData(Qt::DecorationRole, m_tiles[i].scaled(64, 64, Qt::IgnoreAspectRatio, Qt::FastTransformation));
}
}
我正在寻找一种解决方案,其中 QImage 使用此功能围绕其中心旋转:
void TileDisplay::RotateImage(int degree)
{
if(GetTiles().size() > 0) {
QImage *tileToRotate = GetCurrentTile();
if(tileToRotate != nullptr) {
QTransform rotate;
rotate.rotate(degree);
tileToRotate->transformed(rotate);
DisplayTiles();
}
}
}
运行没问题,但是图片没有旋转。 任何帮助表示赞赏。
来自 documentation QImage::transformed
成员函数的签名是...
QImage QImage::transformed(const QTransform &matrix, Qt::TransformationMode mode) const;
因此您需要利用返回的 QImage
。尝试...
*tileToRotate = tileToRotate->transformed(rotate);