Как сделать виджеты Qt изменяемыми по размеру?
Я хочу создать приложение, которое состоит из QLineEdit и двух QTableView виджетов в вертикальной компоновке.
пример кода:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>401</width>
<height>301</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item>
<widget class="QTableView" name="tableView_2"/>
</item>
<item>
<widget class="QTableView" name="tableView"/>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>lineEdit</sender>
<signal>returnPressed()</signal>
<receiver>Dialog</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>200</x>
<y>14</y>
</hint>
<hint type="destinationlabel">
<x>199</x>
<y>149</y>
</hint>
</hints>
</connection>
</connections>
</ui>
Но эти QTableView виджеты нельзя изменить. Я не нашел никакого имущества в Qt для этого.
Итак, как я могу сделать эти QTableView виджеты изменяемыми или автоматически расширяться и сжиматься?
Означает, что если я уменьшаю размер первого QTableView виджета, то автоматически размер второго QTableView виджета должен увеличиваться, значит, каждый виджет должен развернуть или сжать автоматически, если я изменяю размер любого виджета внутри вертикальной компоновки во время выполнения.
Пример кода был разработан в Qt4 Designer на Ubuntu 14.04.
2 ответов:
Разбейте текущий макет, выберите два виджета, нажмите кнопку
Layout Vertically in Splitterи, наконец, выберите форму и нажмите кнопкуlayout vertically.
Это потому, что у вас нет макета на вашем
QDialog. То, что вы сделали, это перетащили вертикальный макет поверх диалогового окна, теперь диалоговое окно содержит макет, который расположенabsoluteи не связан с диалоговым окном. Что вы хотите сделать, это переместить все виджеты из вертикальной компоновки поверхQSplitter, щелкните правой кнопкой мыши наQDialogи в пункте контекстного менюLay outвыберитеLay Out Vertically, или в качестве альтернативы нажмитеQDialogи нажмитеCtrl + 2. Результат должен быть следующим: следующее:<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>Dialog</class> <widget class="QDialog" name="Dialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>405</width> <height>305</height> </rect> </property> <property name="windowTitle"> <string>Dialog</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QSplitter" name="splitter"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <widget class="QLineEdit" name="lineEdit"/> <widget class="QTableView" name="tableView_2"/> <widget class="QTableView" name="tableView"/> </widget> </item> </layout> </widget> <resources/> <connections/> </ui>
Что я рекомендую, так это прочитать документацию по управлению компоновкой Qt для получения дополнительной информации по этой теме.


Comments