QLabel Widge 内で 89x89 の画像を回転させようとしています。
#include "header.h"
disc::disc(QWidget *Parent) : QWidget(Parent)
{
orig_pixmap = new QPixmap();
rotate = new QLabel(this);
showDegrees = new QLabel(this);
orig_pixmap->load("pic.png");
degrees = 0;
rotate->resize(89,89);
rotate->move(100,10);
rotate->setStyleSheet("QLabel{background-color:red;}");
showDegrees->resize(100,100);
showDegrees->move(400,0);
}
void disc::rotate_disc()
{
QString string;
degrees++;
if(degrees == 360) degrees = 0;
QTransform rotate_disc;
rotate_disc.translate( (orig_pixmap->width()-rotate->width())/2 , (orig_pixmap->width()-rotate->height())/2);
rotate_disc.rotate(degrees,Qt::ZAxis);
QPixmap pixmap;
//pixmap = orig_disc->scaled(89,89,Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
pixmap = orig_pixmap->transformed(rotate_disc,Qt::SmoothTransformation);
rotate->setPixmap(pixmap);
string.append("Degrees: " + QString::number(degrees) + "*");
showDegrees->setText(string);
}
回転なのに。画像の半分は QLabel の外側にロールされるため、その側は表示されません。画像の中心の原点(0,0)で中心を回転させるにはどうすればよいですか。
ここにファイルがあります
http://www65.zippyshare.com/v/85775455/file.html
それを見ると、画像が左に跳ねているように見えることがわかります。黒い領域内で回転させるにはどうすればよいですか。
私は、rotate_disc() 関数に 10ms ごとに信号タイムアウトを設定します。これを使用してQtの詳細を学習しています。
ありがとう!