2

中央のウィジェットが黒いシーンを表示する QGraphicsView に設定されている QMainWindow があります(テスト目的)。以下のコードでは、resizeEvent 関数のみを再実装する CQtGlView という QGraphicsView から派生したクラスを使用していることに注意してください。

ビューを直接追加するかどうかに関係なく、

CQtMainWindow::CQtMainWindow() {
  m_glView = new CQtGlView();
  setCentralWidget(m_glView);
}

または、ダミーのウィジェットでマージン 0 のレイアウトに貼り付けます。

CQtMainWindow::CQtMainWindow() {
  m_glView = new CQtGlView();

  QWidget* dummy = new QWidget();
  QHBoxLayout* l = new QHBoxLayout();
  l->setContentsMargins(0,0,0,0);
  l->addWidget(m_glView);
  dummy->setLayout(l);

  setCentralWidget(dummy);
}

ウィジェットの周りに不要な灰色の境界線が表示されます。

以下のスクリーンショットは問題を示しており、私のシーンと Windows エアロ境界の間に表示されます。

centralWidget の境界線

私のアプリケーションがフルスクリーンへの切り替えを許可していない場合、これは問題になりません。画面の残りの部分が黒くなると、境界線は非常に明確になります。

この領域は、中央のウィジェットの外側にある DockWidgetAreas を表している可能性があります。

QMainWindowを使用しない以外に、これを解決するためにできることはありますか? (menuBar、ツールバー、および statusBar を使用しているため、望ましくありません。)

4

2 に答える 2

1

QGraphicsView は QFrame から派生していることがわかりました。ここでは、それは単なる QWidget であると想定していました。

この問題の解決策は、setFrameStyle (QFrame::NoFrame) を呼び出すことでした。私の QGraphicsView サブクラスのコンストラクターで。または、サブクラスでない場合は、

m_glView->setFrameStyle(QFrame::NoFrame);

于 2012-08-17T12:05:02.187 に答える
0

QGraphicsView で setFrameShape(QFrame::NoFrame) を試しましたか?

于 2012-08-17T12:05:58.480 に答える