我有这个嵌入式 Qt 应用程序,它使用 QGraphics 框架来显示 Web 视图。Web 视图的尺寸为 1280*720 像素,QGraphicsView 设置为在这些坐标 (0,0, 1280x720) 处渲染场景。
我正在尝试在右上角(1100,50)添加一个加载指示器,这是一个简单的 PNG 图像,我不时使用 QTimeLine 旋转。
代码看起来像这样(我在互联网上找到了转换技巧):
// loading_indic initialization:
QGraphicsPixmapItem *loading_indic =
new QGraphicsPixmapItem( QPixmap("./resources/loading_64.png") );
loading_indic->setPos(QPoint(1100.0,50.0));
QTimeLine timeline = new QTimeLine(1000);
timeline->setFrameRange(0,steps);
connect(timeline, SIGNAL(valueChanged(qreal)), this, SLOT(updateStep(qreal)));
timeline->start();
// called at each step of a QTimeLine:
void updateStep(qreal step) {
QTransform transformation = QTransform()
// place coordinate system to the center of the image
.translate( width/2.0, height/2.0)
// rotate the image in this new coordinate system
.rotate(new_angle)
// replace the coordinate system to the original
.translate( -width/2.0, -height/2.0);
loading_indic->setTransform(transformation);
}
现在,我的问题是,这样做时,看起来 WebView 也被翻译了,导致所有内容都显示在屏幕中央。
结果如下所示:
webview应该填满屏幕,加载指示器应该在右上角......
我的场景只包含两个项目:
Scene
|
\____ QGraphicsWebView
\____ QGraphicsPixmapItem // loading indicator
我在这里做错了什么?