2

我有一个 QMainWindow,其中心小部件已设置为查看黑色场景的 QGraphicsView(用于测试目的)。请注意,在下面的代码中,我使用了从 QGraphicsView 派生的类,称为 CQtGlView,它仅重新实现了 resizeEvent 函数。

不管我是不是直接加视图,

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 之外,我还能做些什么来解决这个问题?(由于我使用了菜单栏、工具栏和状态栏,所以不受欢迎。)

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 回答