2016-11-14 50 views
1

在Qt5.5 C++程序中,我有各种QDockWidget,每个QDockWidget都包含一个[主要]填充其QDockWidget的窗口小部件。但是,我无法摆脱小部件周围的10px边框。Qt在可停靠窗口中的填充和边距

Screenshot (extraneous space marked in red)

下尝试似乎并没有取得任何成就:

ui->dockable->layout()->setMargin(0); 

ui->dockable->layout()->setSpacing(0); 

ui->dockable->layout()->setContentsMargins(0,0,0,0); 

ui->dockable->setContentsMargins(0,0,0,0); 

ui->dockable->setStyleSheet("margin: 0px; padding: 0px"); 

ui->dockable->setStyleSheet("QDockWidget{ border: 0px }"); 

this->layout()->setContentsMargins(0,0,0,0); 

复制的问题:

  • 文件 - >新建项目 - > Qt控件应用
  • 编辑表格mainwindow.ui
  • 拖码头插件到形式
  • 将其他插件为dockwidget
  • Dockwidget背景上下文菜单 - >铺陈 - >垂直
  • 应该给截图像上面(在Windows 7)

升级到Qt的5.7.0没有帮助。有任何想法吗?

+0

我没有设法摆脱它既不。但至少在macOS下似乎没有边界... –

+0

你能发布确切的代码生成张贴截图。了解如何创建停靠栏和小部件。即使在Win7下,我也没有看到一些利润空间。 – jpo38

+0

在Qt Creator的图形窗体编辑器中创建对接条和窗口小部件,它修改了mainwindow.ui。 – OJW

回答

1

你更新你的文章后...

你必须做到:

ui->dockable->widget()->layout()->setContentsMargins(0,0,0,0); 

ui->dockable->layout()是不是你需要修改的布局。QDockWidget包含一个QWidget(一种主要部件,当QDockWidget被创建时总是可用),这是您的布局是从QtDesigner创建的,因此您必须使用QDockWidget::widget()来访问它。

或者,当你创建QtDesigner的图形用户界面,你也可以使用这个工具来删除您的利润,它就会使GUI看起来像:

enter image description here

+0

这就是答案。关于截图 - 关键特性是知道你需要在Qt Creator的对象浏览器中选择“dockWidgetContents”来获得粉红色的layoutMargin属性。 – OJW

+0

@OJW:true,相应地更新了这篇文章 – jpo38

1

如果您发送了一些您想要的图片,会更容易。

写到这一段代码作为样品(在一个QMainWindow执行):

QWidget* centralWidget = new QWidget(this); 
centralWidget->setStyleSheet("background: blue"); 
setCentralWidget(centralWidget); 

QDockWidget* dock1 = new QDockWidget("docking bar1", this); 
QWidget* widget1 = new QWidget(dock1); 
dock1->setWidget(widget1); 
widget1->setStyleSheet("background: red"); 

QDockWidget* dock2 = new QDockWidget("docking bar2", this); 
QWidget* widget2 = new QWidget(dock2); 
dock2->setWidget(widget2); 
widget2->setStyleSheet("background: green"); 

addDockWidget(Qt::LeftDockWidgetArea, dock1); 
addDockWidget(Qt::RightDockWidgetArea, dock2); 

蓝色中央插件+ 2对接杆,一个填充在红色,另外在绿色(可以很容易地看到边界:他们仍然是灰色地带)。

这表明像这里(薄荷OS)(有意取消停靠绿色停靠栏):

enter image description here

见绿脱开对接条灰色边框。 现在,应用它这个样式表:

dock2->setStyleSheet("QDockWidget { \ 
          border: 0px \ 
            }"); 

然后你没有边界了:

enter image description here

但我不知道,这将解决您的问题。你应该张贴截图,因为停靠栏看起来真的取决于操作系统。当停靠栏停靠在我的操作系统上时,我看不到保证金,但您可能会看到一个(请注意,截图中红色和蓝色区域之间的灰色垂直线不是保证金,而是可用于调整对接大小的滑块酒吧,我不相信你试图压制这一点)。