Qt padding&可停靠窗口的边距

时间:2016-11-14 17:42:39

标签: c++ qt layout

在Qt5.5 C ++程序中,我有各种QDockWidgets,每个都包含一个[大部分]填充其QDockWidget的小部件。然而,小部件周围有一个10px的边框,我无法摆脱它。

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
  • Dockwidget背景上下文菜单 - >布局 - >垂直
  • 应该提供上面的截图(在Windows 7中)

升级到Qt 5.7.0无济于事。有什么想法吗?

2 个答案:

答案 0 :(得分: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个停靠栏,一个填充红色,另一个为绿色(可以很容易地看到边框:它们仍然是灰色区域)。

它在这里显示(Mint OS)(故意脱离绿色对接栏):

enter image description here

查看绿色未对接的对接栏灰色边框。 现在,将它应用于此样式表:

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

然后你再也没有边界了:

enter image description here

但我不确定这会解决您的问题。你应该发布截图,因为对接栏看起来真的取决于操作系统。当对接栏停靠在我的操作系统上时,我看到没有边距,但你可能看到一个(注意我的截图中红色和蓝色区域之间的灰色垂直线不是边距,而是可以用来调整对接的滑块吧,我不相信你试图压制这个。)

答案 1 :(得分:1)

更新帖子后......

你必须这样做:

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

ui->dockable->layout()不是您需要修改的布局。 QDockWidget包含QWidget(一种主要小部件,在创建QDockWidget时始终可用),这是您在QtDesigner中创建布局的部件,因此您必须使用{ {3}}访问它。

或者,当您从QtDesigner创建GUI时,您也可以使用此工具删除边距,它将使GUI看起来像这样:

QDockWidget::widget()