0

我正在使用 Qt,我想显示一个图像,我在 QGraphicsView 中显示它,因为图像大于我使用的 QGraphicsView 框的尺寸

ui->graphicsView->fitInView(viewraw->itemsBoundingRect() ,Qt::KeepAspectRatio);

其中viewraw包含我的图像的像素图地址,我的图像过大的问题已经解决了,但我现在的新问题是Qt自动调整大小后的图像现在显示质量非常非常差,非常非常模糊

我该怎么办?

有什么方法可以显示适合盒子的图像并且没有质量损失?

谢谢!

4

1 回答 1

4

您应该尝试启用抗锯齿:

ui->graphicsView->setRenderHints(QPainter::Antialiasing 
        | QPainter::SmoothPixmapTransform 
        | QPainter::TextAntialiasing);


您可以QLayout::setSizeConstraint(QLayout::SetFixedSize)在包含视图的布局上使用,以调整父小部件的大小以适应视图。大小将是视图sceneRect()函数返回的大小。

例如,以下代码将调整大小QMainWindow(并锁定大小),以便两个项目都可见:

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow mainWindow;
    QGraphicsView *view = new QGraphicsView(&mainWindow);
    QGraphicsScene *scene = new QGraphicsScene(view);
    view->setScene(scene);

    mainWindow.layout()->setSizeConstraint(QLayout::SetFixedSize);
    mainWindow.setCentralWidget(view);
    mainWindow.show();

    scene->addRect(-100,-100,10,10, QPen(), Qt::red );
    scene->addRect(600,450,10,10, QPen(), Qt::blue );

    return a.exec();
}

或者,由于您使用的是设计器,

  • 在小部件树中,转到图形视图的父项,它应该有一个布局,
    • 如果没有(如果图标是这个:)没有布局图标,通过左键单击项目名称添加一个,然后在“布局”菜单中选择一种布局(如果您只有一个小部件,布局类型无关紧要,只需选一个),
  • 然后转到同一项目的属性面板中的最后一个选项,应该是“layoutSizeConstraint”并选择选项“SetFixedSize”。
于 2012-08-19T11:29:53.723 回答