【发布时间】:2021-11-16 23:28:37
【问题描述】:
我遇到了小部件和布局在我的滚动区域内开始重叠的问题。 我目前的布局应该是这样的:
但最终会像这样,小部件开始重叠(这是固定大小的组框):
或者这个(没有固定大小的分组框):
我尝试设置固定尺寸和最小尺寸以及更改尺寸政策,但无论我做什么,有些小部件都会调整大小,有些会重叠,有些会被推到视野之外。
我正在使用设计器和 PyUIC。
设计师生成的.ui文件:
<?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>299</width>
<height>478</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QScrollArea" name="scrollArea">
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>295</width>
<height>474</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>410</height>
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QLabel" name="label_2">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="text">
<string>Select a .bed file to open</string>
</property>
</widget>
</item>
<item>
<widget class="BrowseForm" name="browseWidget"/>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Bead selection mode</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="0">
<widget class="QRadioButton" name="radioStart">
<property name="text">
<string>Start</string>
</property>
<attribute name="buttonGroup">
<string notr="true">beadSelectionModeGroup</string>
</attribute>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="radioInRangeStrict">
<property name="text">
<string>Strictly in range</string>
</property>
<attribute name="buttonGroup">
<string notr="true">beadSelectionModeGroup</string>
</attribute>
</widget>
</item>
<item row="0" column="0">
<widget class="QRadioButton" name="radioInRange">
<property name="text">
<string>In range</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">beadSelectionModeGroup</string>
</attribute>
</widget>
</item>
<item row="1" column="3">
<widget class="QRadioButton" name="radioEnd">
<property name="text">
<string>End</string>
</property>
<attribute name="buttonGroup">
<string notr="true">beadSelectionModeGroup</string>
</attribute>
</widget>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="radioMiddle">
<property name="text">
<string>Middle</string>
</property>
<attribute name="buttonGroup">
<string notr="true">beadSelectionModeGroup</string>
</attribute>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>150</height>
</size>
</property>
<property name="title">
<string>Colour options</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QRadioButton" name="radioSingleColor">
<property name="text">
<string>Use single colour</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">colourButtonGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioScoreColor">
<property name="text">
<string>Use score for colours</string>
</property>
<attribute name="buttonGroup">
<string notr="true">colourButtonGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioColorColor">
<property name="text">
<string>Use colour from file</string>
</property>
<attribute name="buttonGroup">
<string notr="true">colourButtonGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QStackedWidget" name="stackedWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>92</height>
</size>
</property>
<property name="baseSize">
<size>
<width>100</width>
<height>100</height>
</size>
</property>
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="page">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="topMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Colour</string>
</property>
</widget>
</item>
<item>
<widget class="QColourPicker" name="colorPicker">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="baseSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>n</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_2">
<layout class="QVBoxLayout" name="verticalLayout_9">
<property name="topMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QComboBox" name="scoreOrPercentile">
<item>
<property name="text">
<string>Score</string>
</property>
</item>
<item>
<property name="text">
<string>Percentile</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Colour gradient</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QLineEdit" name="startGradient">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QColourPicker" name="colorPickerStartGradient">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="baseSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>n</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLineEdit" name="endGradient">
<property name="text">
<string>1000</string>
</property>
</widget>
</item>
<item>
<widget class="QColourPicker" name="colorPickerEndGradient">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="baseSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>n</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="colourBlendCheckBox_2">
<property name="text">
<string>Use colour blend</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Conflict colour</string>
</property>
</widget>
</item>
<item>
<widget class="QColourPicker" name="conflictColorPicker_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="baseSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>n</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_3">
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="colourBlendCheckBox">
<property name="text">
<string>Use colour blend</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Conflict colour</string>
</property>
</widget>
</item>
<item>
<widget class="QColourPicker" name="conflictColorPicker">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="baseSize">
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>n</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout">
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Main model ID</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="mainModelId">
<property name="text">
<string>1</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>New model name</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="modelName">
<property name="text">
<string>bed_model</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="hideOrg">
<property name="text">
<string/>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Hide beads on main model</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QPushButton" name="generateModelButton">
<property name="text">
<string>Generate Model</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>QColourPicker</class>
<extends>QPushButton</extends>
<header>.qcolourpicker.h</header>
</customwidget>
<customwidget>
<class>BrowseForm</class>
<extends>QLineEdit</extends>
<header>.browseform.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
<sender>colourButtonGroup</sender>
<signal>buttonClicked(int)</signal>
<receiver>stackedWidget</receiver>
<slot>setCurrentIndex(int)</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>217</x>
<y>264</y>
</hint>
</hints>
</connection>
<connection>
<sender>colourBlendCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>label_4</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>81</x>
<y>215</y>
</hint>
<hint type="destinationlabel">
<x>74</x>
<y>222</y>
</hint>
</hints>
</connection>
<connection>
<sender>colourBlendCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>conflictColorPicker</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>111</x>
<y>215</y>
</hint>
<hint type="destinationlabel">
<x>104</x>
<y>245</y>
</hint>
</hints>
</connection>
</connections>
<buttongroups>
<buttongroup name="colourButtonGroup"/>
<buttongroup name="beadSelectionModeGroup"/>
</buttongroups>
</ui>
更新:非常感谢您快速而全面的回答。对于后代,导致我的问题的主要错误是我不知道将最小大小设置回 0x0 与重置它不同。重置我的滚动区域和组框的最小尺寸修复了它!
【问题讨论】:
-
请分享.ui
-
@WilliamHofsøy 问题应该是独立的,不能依赖外部网站的内容。请嵌入文件(它是一个 XML 文件,使用文本编辑器打开它)。
-
@musicamante ui 文件太大而无法嵌入(超过 30000 个字符)
-
@WilliamHofsøy 编辑器是否阻止您嵌入它?如果是这样,我们可以修复它,否则无论如何都尝试这样做:您的问题需要该代码以便每个人都能理解,不仅是回答您的人,而且也适用于将来可能遇到类似问题的其他人,并且由于该文件迟早可能无法使用,因此您的问题几乎无效。
-
@musicamante 是的,如果我嵌入文件,由于字符限制,编辑不会让我更新问题。所以,如果你能修复它,那就太好了!
标签: python pyqt qt-designer