Как сделать виджеты 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.

684   2  

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

    Ничего не найдено.