c++ - 可停靠窗口中的 Qt 填充和边距

标签 c++ qt layout

在 Qt5.5 C++ 程序中,我有各种 QDockWidget,每个 QDockWidget 都包含一个 [大部分] 填充其 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 widgets 应用程序
  • 编辑窗体 mainwindow.ui
  • 将 dockwidget 拖到窗体上
  • 将其他小部件拖到 dockwidget 中
  • Dockwidget 背景上下文菜单 -> 布局 -> 垂直
  • 应该像上面那样提供屏幕截图(在 Windows 7 中)

升级到 Qt 5.7.0 没有帮助。有什么想法吗?

最佳答案

更新帖子后...

你必须做到:

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

ui->dockable->layout() 不是你需要修改的布局。 QDockWidget 包含一个 QWidget(一种主要的小部件,在创建 QDockWidget 时始终可用),这是您在其中创建布局的那个来自 QtDesigner,所以你必须使用 QDockWidget::widget()访问它。

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

enter image description here

关于c++ - 可停靠窗口中的 Qt 填充和边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40594721/

相关文章:

qt - 添加可执行文件作为 Qt 应用程序的资源?

android - 堆叠两个 ImageButton

JavaFX 8 - 布局交换或与 Qt 的 StackedWidget 类似/等效的功能?

c++ - 选择两个字符串之一输出?

c++ - 使用LD链接中间文件

c++ - 不可复制、不可移动、显式构造类型的成员数组的初始化

CSS布局问题

c++ - 当函数的参数是函数指针时,函数对象如何用作函数指针

c++ - Qt:如何处理用户按下 'X'(关闭)按钮的事件?

c++ - 用opencv计算cos(x)和sin(x)时出错