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();
}

または、デザイナーを使用しているため、

  • ウィジェット ツリーで、グラフィックス ビューの親アイテムに移動します。レイアウトが必要です。
    • そうでない場合 (アイコンが の場合レイアウト アイコンなし)、アイテム名を左クリックして追加し、[レイアウト] メニューでレイアウトを選択します (ウィジェットが 1 つしかない場合は、レイアウトの種類は関係ありません。いずれかを選択)、
  • 次に、同じ項目のプロパティ パネルの最後のオプション (「layoutSizeConstraint」である必要があります) に移動し、「SetFixedSize」オプションを選択します。
于 2012-08-19T11:29:53.723 に答える