繁体   English   中英

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

[英]Qt padding & margins in dockable windows

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

屏幕截图(外部空间标记为红色)

以下尝试似乎没有实现任何目的:

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拖到窗体上
  • 将其他小部件拖到ockockwidget中
  • Dockwidget背景上下文菜单->布局->垂直
  • 应该提供如上的屏幕截图(在Windows 7中)

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

如果您发送了一些自己想要的东西的图片,将会更容易获得帮助。

编写以下代码作为示例(在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)(有意断开绿色的停靠栏):

在此处输入图片说明

请参见绿色的未对接扩展坞灰色边框。 现在,将其应用于此样式表:

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

然后,您将不再有边界:

在此处输入图片说明

但我不确定是否可以解决您的问题。 您应该发布屏幕截图,因为对接栏的外观确实取决于操作系统。 当停靠栏停靠在我的操作系统上时,我看不到任何空白,但是您可能会看到一个空白(请注意,屏幕截图中红色和蓝色区域之间的灰色垂直线不是空白,而是一个可用于调整停靠大小的滑块酒吧,我不相信您要抑制这种情况。

更新帖子后...

您必须做:

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

ui->dockable->layout()不是您需要修改的布局。 QDockWidget包含一个QWidget (一种主窗口小部件,在创建QDockWidget时始终可用),这是从QtDesigner中创建布局的一个窗口,因此必须使用QDockWidget :: widget()进行访问。

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM