2014-10-11 65 views
2

我想要创建一个应用程序,它由垂直布局中的QLineEdit和两个QTableView小部件组成。如何让Qt小部件可调整大小?

示例代码:

<?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小部件应该增加意味着如果在运行时更改垂直布局内的任何小部件的尺寸,则每个小部件都应自动展开或收缩。

样本代码设计在Qt4 DesignerUbuntu 14.04

+0

@Chernobyl我想通过鼠标调整窗口小部件的大小 – Patrick 2014-10-11 08:26:41

回答

3

打破当前布局,选择两个小工具,点击Layout Vertically in Splitter,最后选择表格并点击layout verticallyenter image description here

+0

垂直布局中的布局? – Patrick 2014-10-11 08:39:40

+1

@Patrick对不起,但我不知道python。反正Zlatomir的解决方案也很好。为他+1。 – Chernobyl 2014-10-11 08:48:37

+0

@Zlatomir完成说,但在QTableView小部件的边界预览中没有显示调整它的任何符号。 – Patrick 2014-10-11 08:48:47

1

这是因为您的QDialog没有布局。你做的是你在对话框上拖动了一个垂直布局,现在这个对话框包含的布局是absolute,并且没有链接到对话框。你想要做的是将所有的小部件从QSplitter顶部的垂直布局中移出,右键单击QDialogLay 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> 

enter image description here

我的建议是阅读Qt Layout Management Documentation关于这一主题的更多信息。

+0

@luliu我试过你的代码,当鼠标放在边框上时,它也不给出调整窗口小部件大小的选项。 – Patrick 2014-10-11 12:34:57

+0

@Patrick,所以你想通过拖动小部件之间的区域来改变每个小部件的高度? – Iuliu 2014-10-11 12:38:52

+0

@帕特里克如果是的话,请参阅我的编辑。 – Iuliu 2014-10-11 12:45:03

相关问题