LINUX.ORG.RU

Qt widgets and layouts


0

1

Не могу разобраться с упаковкой виджетов в менеджеры расположения.

Что хочется: http://bit.ly/eK3vhQ
Что получается: http://bit.ly/eSrULS

Проще говоря хочется, чтобы виджеты вертикально были рядом, а не растаскивались по всему окну.

MainWindow->resize(467, 293);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
verticalLayout = new QVBoxLayout(centralwidget);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
lineEdit = new QLineEdit(centralwidget);
lineEdit->setObjectName(QString::fromUtf8("lineEdit"));

verticalLayout->addWidget(lineEdit);

pushButton = new QPushButton(centralwidget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(pushButton->sizePolicy().hasHeightForWidth());
pushButton->setSizePolicy(sizePolicy);

verticalLayout->addWidget(pushButton);

Или в виде 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>467</width>
    <height>293</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <widget class="QLineEdit" name="lineEdit"/>
    </item>
    <item>
     <widget class="QPushButton" name="pushButton">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="text">
       <string>PushButton</string>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

В какую сторону копать? И еще можете посоветовать годных статей про виджетостроение в Qt.

Воткни третьим элементом QSpacerItem с растягиванием по-вертикали - он прижмёт два предыдущих виджета вверх.

anonymous
()

> В какую сторону копать?

Добавь после PushButton VerticalSpacer.

reader
()

если не через ui, то надо добавить verticalLayout->addStretch()

wmd
()
Ответ на: комментарий от Obey-Kun

«Если есть возможность не программировать, то пользуйтесь ей». UI как раз и является такой возможностью, которая позволяет сократить кол-во кода написанного вручную со всеми вытекающими последствиями.

anonymous
()

> И еще можете посоветовать годных статей про виджетостроение в Qt.

А документация на что?! Начните с Qt Assistant - в нем есть статьи для начинающих, потом можно переходить к примерам, входящим в SDK.

anonymous
()
Ответ на: комментарий от Obey-Kun

Хорошо, что хоть честно сказали: «я ее не осилил».

anonymous
()
Ответ на: комментарий от Obey-Kun

Неосиливание штуки не делает её стрёмной, тем не менее.

UVV ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.