Эта проблема сводит меня с ума, и я не могу найти логического ответа.Я довольно новичок в этом, поэтому, пожалуйста, имейте в виду.
Я создаю приложение, в котором я создаю вертикальную «панель навигации» и мне нужно динамически добавлять QPushButtons.Я заметил, что горизонтальное положение метки в QVBox изменяется, когда к нему добавляется QPushButton.
Я создал минимальную версию:
Перед добавлением QPushButton:
Метка достигает края приложения
![](https://i.stack.imgur.com/3pQpJ.png)
После добавления QPushButton:
Ширина метки немного уменьшается
![](https://i.stack.imgur.com/UFaAj.png)
Вот код, который я использую для динамического добавления файла QPushButton:
void MainWindow::on_pushButton_clicked()
{
QPushButton *newButton = new QPushButton("Test");
newButton->setContentsMargins(0,0,0,0);
newButton->setStyleSheet("margin: 0; padding: 0;");
ui->verticalLayout->setMargin(0);
ui->verticalLayout->setContentsMargins(0,0,0,0);
// add new push button inside VBox
ui->verticalLayout->addWidget(newButton);
}
.ui:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>203</width>
<height>224</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>201</width>
<height>151</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="styleSheet">
<string notr="true">border: 1px solid white;</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>180</y>
<width>181</width>
<height>32</height>
</rect>
</property>
<property name="text">
<string>Add Push Button To VBox</string>
</property>
</widget>
</widget>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
Как вы можете видеть, установив поля на обоихQPushButton и макет, кажется, не имеют никакого эффекта.Есть ли кто-нибудь, кто мог бы пролить свет на этот вопрос?