視覺圖像界面設計【QT-creator高級編程 - 01】圖像顯如何保證跟隨主窗口變化,且保留必要的設定窗口

前言:

問題,顯示圖像的時候,按最大窗口,圖片窗口不跟著變大,還有,右邊那些設置控件都沒有動


解決:

步驟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 采用手動配置布局的方式

  1. 全選所有控件(Ctrl+A)

  2. 右鍵 → Lay out → Lay out Vertically in Splitter(或 Lay out Horizontally in Splitter

    • 自動生成 QSplitter,兩邊可拖動,比例自動保存。

  3. 保存 → Ctrl+S.ui 文件立即更新。

【案,當然左側也可設置為Fixed大小,就是不變化,這樣就固定在左側】

總體規劃如下:

控件屬性
graphicsViewsizePolicyExpanding / Expanding
graphicsViewminimumSize可留空(或設 100×100)
右側 GroupBoxsizePolicyMinimumExpanding / Preferred
右側 GroupBoxmaximumWidth留空(或設 400)
整體layoutStretch1, 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里面去生成

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93708.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93708.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93708.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pair之于vector、queue(vector<pair<int,int>>)

1、vector<pair<int,int>> 和 Map 的異同點map:會對插入的元素按鍵Key,自動排序,而且鍵Key不允許重復;vector:的這種用法不會自動排序,而且允許重復。2、queu…

從合規到卓越:全星QMS如何成為制造企業的質量戰略引擎

從合規到卓越:全星質量管理QMS軟件系統如何成為制造企業的質量戰略引擎 全星質量管理QMS軟件系統憑借其高度定制化、智能化、全流程覆蓋等核心優勢,已在汽車制造、電子、醫療、航空航天等多個高端制造領域實現領先性應用,顯著提升了企業的質…

按鍵及消抖

方法一:延時阻塞key.c:#include "key.h" #include "delay.h"//初始化GPIO void key_init(void) {GPIO_InitTypeDef gpio_initstruct;//打開時鐘__HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA時鐘//調用GPIO初始化函數…

什么是接口?PHP如何使用 SessionHandlerInterface 接口實現Session自定義會話數據存儲

在面向對象編程中,接口(Interface)作為類與類之間的契約規范,定義了實現類必須遵守的方法簽名集合,卻不包含具體實現細節。這種抽象機制通過強制統一的方法命名和參數結構,實現了代碼的解耦與多態性&#x…

健身房預約系統SSM+Mybatis-plus實現(二、增刪改查的具體實現)

文章目錄一、環境搭建二、用戶管理頁面(純展示無事件操作)0.三步走1.查詢表單(1)書寫頁面代碼 :(2)對應的js部分創建對象數據模型的綁定部分:(3)引入需要的庫…

在IAR Embedded Workbench for Arm中實現NXP S32K3安全調試

隨著汽車電子系統變得越來越智能,對功能安全(Safety)的要求越來越高,同時信息安全(Security)也越來越被關注,安全調試(Secure Debug)機制已成為一個重要的信息安全特性。…

Vue實例中的其他屬性【5】

目錄1.計算屬性:1.概述:2.語法特點:3.案例:案例1:案例2:案例3:4.總結:5.get函數什么時候執行?6.注意:2.監視屬性:1.概述: 2.用法:1.監…

C++入門自學Day11-- String, Vector, List 復習

往期內容回顧 List類型的自實現 List類型(初識) Vector類的自實現 Vector類(注意事項) 初識Vector String類的自實現 String類的使用(續) String類(續) String類(初識&…

JavaScript性能優化實戰(三):DOM操作性能優化

想象一下,你正在精心布置一個豪華蛋糕(你的網頁),每次添加一顆草莓(DOM元素)都要把整個蛋糕從冰箱拿出來、放回去(重排重繪),來來回回幾十次,不僅效率低下&am…

【力扣】面試經典150題總結02-雙指針、滑動窗口

1.驗證回文串(簡單)用toLowerCase()轉為小寫字母,然后前后指針向中間進行比對。2.判斷子序列(簡單)兩個指針一個指向長字符串,另一個指向短字符串。匹配就都1,不匹配就將長字符串指針1。長字符串…

MQ遷移方案

以下是完整的MQ遷移方案設計,涵蓋同構/異構遷移、零丟失保障、灰度切換等關鍵環節,適用于Kafka、RabbitMQ、RocketMQ等主流消息隊列:?一、遷移方案選型矩陣??場景??適用方案??技術實現??優缺點??同集群版本升級?滾動重啟 協議兼…

RAG 分塊中表格填補簡明示例:Markdown、HTML、Excel、Doc

表格填補是RAG分塊中常見的需求,但不同格式的表格處理方式有所不同。本文將對 Markdown、HTML、Excel 的合并單元格進行說明,并給出 Python 示例,演示如何解析和填補。1. Markdown 表格Markdown 只能用空值表示合并單元格。(只有列…

IDEA創建一個VUE項目

由于新手學習VUE,所以使用手動初始化項目 步驟: 創建項目文件夾:在 IDEA 中點擊 File > New > Project,選擇 Empty Project,指定項目路徑。初始化 npm:在終端中:npm init -y安裝vue&#…

Chrome插件開發實戰:todoList 插件

以下是一個適合小團隊自用的 Chrome TodoList 插件開發示例,包含基礎功能(增刪改查、本地存儲、統計)和簡潔的交互設計。代碼結構清晰,適合新手學習或快速上手。 一、項目準備 創建插件項目目錄 todo-list-extension,…

【Redis數據庫開啟SSL加密】【小白指南】【生產環境可用】附帶Docker服務器配置和python連接Redis數據庫代碼(加密通訊版)

【Redis數據庫開啟SSL加密】【填坑指南】附帶服務器配置和python連接測試代碼 本教程轉為小白提供設置Redis安全訪問,自簽名證書進行安全訪問你的Redis數據庫,輕松實現安全訪問和保護數據庫不被非法入侵。 本文原創,轉載請注明出處&#xff0…

筆記本電腦鍵盤失靈【已解決】

配置環境硬件詳情筆記本電腦聯想拯救者y7000 2019 PG0(已更新為win11)外接鍵盤colorful ckb-p100問題今天筆記本開機后,進入登錄頁面輸入密碼,突然發現筆記本自帶鍵盤(我通常不用外接鍵盤)的鍵失靈了&#…

postgresql運維問題解決:PG集群備節點狀態異常告警處理

小亦平臺會持續給大家科普一些運維過程中常見的問題解決案例,運維朋友們可以在常見問題及解決方案專欄查看更多案例 問題概述: 故障: pg數據庫備節點狀態異常現象: 一般為集群間心跳超時導致,現象為集群有fail-count失敗數告警&…

Maven 開發實踐

文章目錄1. 搭建私服(windows)2.上傳依賴3.多個遠程倉庫配置4.其它1. 搭建私服(windows) 軟件下載 https://help.sonatype.com/en/download.html修改端口 etc/nexus-default.properties啟動程序 管理員身份進入進入bin目錄下執行.\nexus.exe /run創建Ma…

設計心得——如何架構選型

一、架構的作用 可能對于很多的公司,其實架構本身的重要性并不大。大家一定明白這回事,架構在實際的開發,在大多數的場景下其實用處并沒有書籍和資料中講的那樣重要,甚至是可有可無。這樣講是不有些可笑?是不是覺得挺意…

vba學習系列(12)--反射率通過率計算復雜度優化25/8/17

系列文章目錄 文章目錄系列文章目錄前言一、反射率通過率1.整體通過率2.整體通過率3.客戶工藝匹配4.機臺通過率分析5.鏡片通過率罩次分析分析1.1分析1.26.鏡片通過率圈數分析分析1.1分析1.28.鏡筒通過率圈數分析分析1.1分析1.29.鏡筒通過率罩次分析分析1.2總結前言 一、反射率通…