私はQt 5.7のQGraphicsView
に表示したい背景イメージを持っています。スクロールする必要なしに、ウィンドウのサイズが画面全体を正確に覆うようなサイズにしたいと思います。だから、私はそれがWindowsのタスクバーとUbuntuの上パネルと左パネルのスペースを確保したいと思っています(私はUbuntu 14.04を使用しています)。QDesktopWidget available Qtのジオメトリ()が正常に動作しない、完全な画像を表示するために垂直にスクロールする必要がある
Qtのドキュメントから、QDesktopWidget::availableGeometry()がこの目的で使用する関数であることがわかりました。これはStackOverflow hereとhereで繰り返されています。
ただし、これを使用しようとすると、スクロールバーのポリシーをQt::ScrollBarAlwaysOff
に設定すると画像の一部が途切れることがわかります。スクロールバーのポリシーを垂直に少しスクロールする必要があります。
ここ小さなサンプルコードは次のとおり
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QApplication>
#include <QImage>
#include <QBrush>
#include <QDebug>
#include <QDesktopWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene *scene = new QGraphicsScene;
QGraphicsView *view = new QGraphicsView;
view->setScene(scene);
QRect rec = QApplication::desktop()->availableGeometry();
int screenHeight = rec.height();
int screenWidth = rec.width();
QImage *back = new QImage("image.jpg");
QImage *background = new QImage(back->scaled(screenWidth,screenHeight,Qt::KeepAspectRatio,Qt::FastTransformation));
QBrush *brush = new QBrush(*background);
view->setBackgroundBrush(*brush);
// view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->setFixedSize(screenWidth,screenHeight);
view->setSceneRect(0,0,screenWidth,screenHeight);
view->show();
return a.exec();
}
マイ画面解像度を1366x768ピクセルであるので、私はそのサイズの画像を使用し、表示する前QImage::scaled()
関数を使用してスケーリングされています。例えば
、入力された場合: 画像の帰属:Mirela1234、1366x768-Natural-desktop-wallpaper、CC BY-SA 4.0
私は上記のコードを実行すると、私が手: (Iから上部と左側のパネルをトリミングしていますスクリーン)。
どうしてですか? availableGeometry()
は、タイトルバーを説明していませんか?どうすれば修正できますか?
ありがとうございます。