![](/img/trans.png)
[英]101 Qt stylesheet margins padding hack guide in C++. Setting padding doesn't work
[英]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 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.