最小化Qt小部件的大小

时间:2017-01-07 21:50:38

标签: qt pyqt pyqt5 qt-designer

使用Qt 5.7 Designer创建的.ui文件显示了一个文本框和一个spacer:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>310</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QPlainTextEdit" name="plainTextEdit">
     <property name="sizePolicy">
      <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="plainText">
      <string>abc</string>
     </property>
    </widget>
   </item>
   <item>
    <spacer name="verticalSpacer">
     <property name="orientation">
      <enum>Qt::Vertical</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>

例如,如果文本字段有&#34; abc&#34;,它应该是一行高;如果它有两行(比如&#34; abc \ nabc&#34;),或者一条需要两行显示的长行,那么文本框应该是两行高。

最小高度为0.我尝试更改文本框的大小调整策略,以使小部件尽可能小,但都不会这样做。

等效Python,执行此操作的代码是:

app=QApplication([])

widget = QWidget()
widget.setLayout(QVBoxLayout())

text_widget = QPlainTextEdit('abc')
# text_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.MinimumExpanding)
widget.layout().addWidget(text_widget)

spacer = QSpacerItem(20, 40, vPolicy=QSizePolicy.Expanding)
widget.layout().addSpacerItem(spacer)

widget.show()
app.exec_()

0 个答案:

没有答案