我有烦人的问题.我创建了QVBoxLayout,我添加了我的小部件.这是我的构造函数中的示例:
layout = new QVBoxLayout;
layout->setMargin(0);
layout->setContentsMargins(QMargins(0,0,0,0));
layout->setSpacing(0);
Run Code Online (Sandbox Code Playgroud)
然后我有添加小部件的功能.
layout->addWidget(_wave);
Run Code Online (Sandbox Code Playgroud)
_wave是我自己的小部件.但是你可以添加你想要的任何东西,例如QButton.
我想要实现什么? 类似这样,但没有任何空格beidgeween添加到布局.只是QButtons或其他小部件,相互粘贴.
我添加了setMargins,setSpacing等等.请帮助我,我真的不知道该怎么做.

对不起颜色,但我想提到我想要实现的目标.我有mainWindow,我在其上添加了QWidget.这个小部件有蓝色背景.然后到布局,我添加了一些小部件,在这个图像上是橙色的.我只是想确定,小部件之间的这个蓝色背景是不可见的.我希望在widget下有widget,没有任何空间.
我有一个QLabel在QVBoxLayout. 大多数情况下,它只有一行文本,但有时,文本可能太长而无法容纳在一行中。所以我必须启用wordWrap.
我希望标签尽可能(垂直)小,因此我设置setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum).
现在,如果有足够的垂直空间,标签会更高,因为它必须只有一行:
在相同的窗口大小且未启用自动换行的情况下,标签仅占用我希望它占用的最小空间:
这也可以通过启用 wordWrap 并且独立于窗口高度来实现吗?
我已经了解了如何调整布局中小部件之间的空间: Space Between widgets in QVBoxLayout。但是,我想知道如何调整添加到布局的布局之间的空间。
例如:
layout = QVBoxLayout()
h1_layout = QHBoxLayout()
h2_layout = QHBoxLayout()
layout.addLayout(h1_layout)
layout.addLayout(h2_layout)
Run Code Online (Sandbox Code Playgroud)
我希望h1_layout和的内容h2_layout彼此靠近放置,而不是在垂直布局上间隔开。
我有一个 QVBoxLayout,其中我在运行时动态添加其他 QWidget :
for(int i = 0; i < value; i++)
{
QList<QWidget*> widgetList_i;
//... widgetList_i.append(a lot of widgets)
ui->verticalLayout->addWidget(widget_i);
}
Run Code Online (Sandbox Code Playgroud)
这些添加的小部件之间有很多浪费的空间:
当我运行应用程序时,我可以用鼠标压缩高度。
使用限制每个widgetList_i小部件的高度setMaximumheigth()是一个很好的方法,但是我在开头和结尾浪费了空间:
仅添加 aui->vertivalLayout->addStretch(1);会导致末尾出现空白。该布局的开头很好:
添加 QSpacerItem 会使情况变得更糟:
是否有一个函数可以将添加的小部件的布局高度设置为最小值?
我在使用Qt的应用程序中有多个选项卡,我将它们全部添加到QVBoxLayout对象中.如何知道选择哪一个?
我QVBoxLayout用QWidget在运行时创建的对象动态填充。我也想在运行时将其删除,但是如何?
我可以一一删除小部件:
void QLayout::removeWidget(QWidget * widget)
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式遍历布局吗?
qvboxlayout ×6
qt ×4
c++ ×3
qlayout ×2
spacing ×2
layout ×1
pyqt ×1
python ×1
qlabel ×1
qscrollarea ×1
qsizepolicy ×1
qt5 ×1
qt5.4 ×1
qwidget ×1