我有一个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);
}我在小部件周围看到了一个不需要的灰色边框。
下面的屏幕截图说明了这个问题,在我的场景和窗口航空边框之间可见。

如果我的应用程序不允许切换到全屏,这将不是问题。一旦屏幕的其余部分为黑色,边框就会非常明显。
此区域可能表示中心小部件外部的DockWidgetAreas。
除了不使用QMainWindow,我还能做些什么来解决这个问题呢?(由于我使用menuBar、工具栏和statusBar,这是不可取的。)
发布于 2012-08-17 20:05:02
事实证明,QGraphicsView是从QFrame派生出来的,我认为它只是一个QWidget。
这个问题的解决方案是在我的QGraphicsView子类的构造函数中调用setFrameStyle(QFrame::NoFrame);。或者如果它不是一个子类,
m_glView->setFrameStyle(QFrame::NoFrame);
发布于 2012-08-17 20:05:58
你在QGraphicsView上尝试过setFrameShape(QFrame::NoFrame)吗?
https://stackoverflow.com/questions/12005174
复制相似问题