前言:
問題,顯示圖像的時候,按最大窗口,圖片窗口不跟著變大,還有,右邊那些設置控件都沒有動
解決:
步驟1:
1?? 讓?
graphicsView
?自動占滿在 Qt Creator 中選中 graphicsView_7 / 12 / …
→ 屬性面板 → Layout
→ 勾選:
?
horizontalSizePolicy: Expanding
?
verticalSizePolicy: Expanding
?
sizeAdjustPolicy: AdjustToContents
步驟2:
?讓右側控件區域自動收縮/拉伸
選中右側 GroupBox(或整體布局)
→ 屬性面板 → Layout
?
horizontalSizePolicy: MinimumExpanding
?
maximumSize
:寬度留空(或設大值)?
layoutStretch
:左 1,右 0(左側優先拉伸)
步驟3:
3.1 采用柵格布局配置
這種配置方式在窗體上我們采取右鍵去選擇。然后這里面用柵格的方式。這種方式會自動將窗體上的控件拉伸到一個全屏的狀態。這樣就不會最大化的窗口控件變小的情況。這種方式比較適合于圖形采樣的界面。因為圖形控件會自動的拉伸到最大,并且會和窗口的拉伸。而其他的一些配置控件,例如bottom則會保持原來的大小,這樣的話就會將圖形窗口最大化,并且隨著主窗口的變化而變化。
不同拉伸的效果情況。
我們看到途徑窗口被設置為最大的尺寸,并且隨著窗口的變化而變化而巴特呢這些小的控件因為它本身不大,所以它的變化率會變小,這樣的話有利于我們最大化圖形窗口顯示。
【案,這種方式比較簡潔一點,大部分是系統自動調整大小,然后,比例大的控件,自然大一點,當然,如果要最大化圖像顯示,那么,可以用下面手動的方式進行約束】
【案,注意我的按鍵設定選擇了固定大小】
3.1 采用手動配置布局的方式
全選所有控件(Ctrl+A)
右鍵 → Lay out → Lay out Vertically in Splitter(或 Lay out Horizontally in Splitter)
自動生成
QSplitter
,兩邊可拖動,比例自動保存。保存 → Ctrl+S →
.ui
文件立即更新。
【案,當然左側也可設置為Fixed大小,就是不變化,這樣就固定在左側】
總體規劃如下:
控件 | 屬性 | 值 |
---|---|---|
graphicsView | sizePolicy | Expanding / Expanding |
graphicsView | minimumSize | 可留空(或設 100×100) |
右側 GroupBox | sizePolicy | MinimumExpanding / Preferred |
右側 GroupBox | maximumWidth | 留空(或設 400) |
整體 | layoutStretch | 1, 0 (左拉伸,右固定) |
配置GUI布局的應用:
在QT creator里面主要會生成下面兩個文件,一個是form.ui的GUI界面布局文件,一個是由這個界面布局生成的GUI的控件的命名和位置的python的表達文件。ui_form.py
form.ui
ui_form.py (部分代碼)
# -*- coding: utf-8 -*-################################################################################
## Form generated from reading UI file 'form.ui'
##
## Created by: Qt User Interface Compiler version 6.7.3
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,QMetaObject, QObject, QPoint, QRect,QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,QFont, QFontDatabase, QGradient, QIcon,QImage, QKeySequence, QLinearGradient, QPainter,QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QAbstractItemView, QAbstractScrollArea, QApplication, QCheckBox,QFormLayout, QGraphicsView, QGridLayout, QGroupBox,QHBoxLayout, QLabel, QLineEdit, QListView,QListWidget, QListWidgetItem, QPushButton, QScrollBar,QSizePolicy, QSlider, QTabWidget, QVBoxLayout,QWidget)class Ui_Widget(object):def setupUi(self, Widget):if not Widget.objectName():Widget.setObjectName(u"Widget")Widget.setWindowModality(Qt.WindowModality.ApplicationModal)Widget.resize(1460, 1004)sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(Widget.sizePolicy().hasHeightForWidth())Widget.setSizePolicy(sizePolicy)self.gridLayout_2 = QGridLayout(Widget)self.gridLayout_2.setObjectName(u"gridLayout_2")self.tabWidget = QTabWidget(Widget)self.tabWidget.setObjectName(u"tabWidget")self.tabWidget.setEnabled(True)self.tabWidget.setAutoFillBackground(False)self.tabWidget.setTabShape(QTabWidget.TabShape.Rounded)self.tabWidget.setElideMode(Qt.TextElideMode.ElideLeft)self.tabWidget.setUsesScrollButtons(True)self.tabWidget.setTabBarAutoHide(True)self.tab_7 = QWidget()self.tab_7.setObjectName(u"tab_7")sizePolicy.setHeightForWidth(self.tab_7.sizePolicy().hasHeightForWidth())self.tab_7.setSizePolicy(sizePolicy)self.formLayout_2 = QFormLayout(self.tab_7)self.formLayout_2.setObjectName(u"formLayout_2")self.groupBox_11 = QGroupBox(self.tab_7)self.groupBox_11.setObjectName(u"groupBox_11")sizePolicy1 = QSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.MinimumExpanding)sizePolicy1.setHorizontalStretch(0)sizePolicy1.setVerticalStretch(0)sizePolicy1.setHeightForWidth(self.groupBox_11.sizePolicy().hasHeightForWidth())self.groupBox_11.setSizePolicy(sizePolicy1)self.gridLayout_4 = QGridLayout(self.groupBox_11)self.gridLayout_4.setObjectName(u"gridLayout_4")self.pushButton_22 = QPushButton(self.groupBox_11)self.pushButton_22.setObjectName(u"pushButton_22")font = QFont()font.setPointSize(12)self.pushButton_22.setFont(font)self.gridLayout_4.addWidget(self.pushButton_22, 0, 0, 1, 1)self.listWidget_2 = QListWidget(self.groupBox_11)self.listWidget_2.setObjectName(u"listWidget_2")self.gridLayout_4.addWidget(self.listWidget_2, 1, 0, 1, 3)self.pushButton_7 = QPushButton(self.groupBox_11)self.pushButton_7.setObjectName(u"pushButton_7")self.pushButton_7.setFont(font)self.gridLayout_4.addWidget(self.pushButton_7, 2, 0, 1, 1)self.pushButton_21 = QPushButton(self.groupBox_11)self.pushButton_21.setObjectName(u"pushButton_21")self.pushButton_21.setFont(font)self.gridLayout_4.addWidget(self.pushButton_21, 2, 1, 1, 2)self.pushButton_18 = QPushButton(self.groupBox_11)self.pushButton_18.setObjectName(u"pushButton_18")font1 = QFont()font1.setPointSize(16)self.pushButton_18.setFont(font1)self.gridLayout_4.addWidget(self.pushButton_18, 3, 0, 1, 1)self.pushButton_19 = QPushButton(self.groupBox_11)self.pushButton_19.setObjectName(u"pushButton_19")self.pushButton_19.setFont(font1)self.gridLayout_4.addWidget(self.pushButton_19, 3, 1, 1, 2)self.slider_expoTime = QSlider(self.groupBox_11)self.slider_expoTime.setObjectName(u"slider_expoTime")self.slider_expoTime.setValue(50)self.slider_expoTime.setOrientation(Qt.Orientation.Horizontal)self.gridLayout_4.addWidget(self.slider_expoTime, 4, 0, 1, 2)self.lab_expoTime = QLabel(self.groupBox_11)self.lab_expoTime.setObjectName(u"lab_expoTime")self.gridLayout_4.addWidget(self.lab_expoTime, 4, 2, 1, 1)self.horizontalSlider_6 = QSlider(self.groupBox_11)self.horizontalSlider_6.setObjectName(u"horizontalSlider_6")self.horizontalSlider_6.setValue(50)self.horizontalSlider_6.setOrientation(Qt.Orientation.Horizontal)self.gridLayout_4.addWidget(self.horizontalSlider_6, 5, 0, 1, 2)self.horizontalSlider_7 = QSlider(self.groupBox_11)self.horizontalSlider_7.setObjectName(u"horizontalSlider_7")self.horizontalSlider_7.setValue(50)self.horizontalSlider_7.setOrientation(Qt.Orientation.Horizontal)self.gridLayout_4.addWidget(self.horizontalSlider_7, 6, 0, 1, 2)self.horizontalSlider_8 = QSlider(self.groupBox_11)self.horizontalSlider_8.setObjectName(u"horizontalSlider_8")self.horizontalSlider_8.setValue(50)self.horizontalSlider_8.setOrientation(Qt.Orientation.Horizontal)self.gridLayout_4.addWidget(self.horizontalSlider_8, 7, 0, 1, 2)self.pushButton_20 = QPushButton(self.groupBox_11)self.pushButton_20.setObjectName(u"pushButton_20")self.pushButton_20.setFont(font1)self.gridLayout_4.addWidget(self.pushButton_20, 8, 0, 1, 3)self.pushButton_17 = QPushButton(self.groupBox_11)self.pushButton_17.setObjectName(u"pushButton_17")self.pushButton_17.setFont(font1)self.gridLayout_4.addWidget(self.pushButton_17, 9, 0, 1, 3)self.graphicsView_7 = QGraphicsView(self.groupBox_11)self.graphicsView_7.setObjectName(u"graphicsView_7")sizePolicy.setHeightForWidth(self.graphicsView_7.sizePolicy().hasHeightForWidth())self.graphicsView_7.setSizePolicy(sizePolicy)
ui_form.py 的生成方式,可以在QT Creator里面
當然,也可以,用一有的form.ui到pycharm里面去生成