qt窗口--01

文章目錄

  • qt窗口--01
    • 窗口概覽
    • 菜單欄
    • 工具欄
    • 狀態欄
    • 浮動窗口
      • 子窗口
      • 對話框
      • model
    • 結語

很高興和大家見面,給生活加點impetus!!開啟今天的編程之路!!
在這里插入圖片描述
作者:?( ‘ω’ )?260
我的專欄:qt,Linux,C++進階,C++初階,數據結構初階,題海探驪,c語言
歡迎點贊,關注!!

qt窗口–01

窗口概覽

在這里插入圖片描述
qt中窗口主要分為6類,分別是標題,菜單欄,工具欄,中央窗口,狀態欄,子窗口(鉚接控件),接下來我們來依次介紹~

菜單欄

我們直接來看示例。
示例1,我們來完成最基本的添加菜單,以及添加菜單中的項,來看代碼:
在這里插入圖片描述
隨后我們來完成槽函數的書寫:
在這里插入圖片描述
我們來看效果:
在這里插入圖片描述

結論:如果菜單中的菜單項被按下,就會發送一個triggered的信號

示例2:創建快捷方式,使用快捷方式直接對菜單或菜單項進行操作。
我們還是直接引用上面的示例1:
在這里插入圖片描述
同理,如果我們此時對于每個按鈕設置上對應的槽函數,同時連接上triggered信號,就能夠實現更多的操作~

示例三:菜單中并不是只能是菜單項,也可以是菜單。但是層數越多的話會導致用戶體驗不是很好,來看代碼:
在這里插入圖片描述
來看結果:
在這里插入圖片描述及時就是類似于嵌套的形式了

示例4:設置分割線:
先來說細節:跟布局管理中講解的spacer差不多,一定要注意添加的位置。
在上述例子中,如果我們需要再文件菜單中的菜單項1和菜單項2添加分割符,我們需要寫在添加這兩個菜單項的中間,來看代碼:
在這里插入圖片描述
示例5:我們給菜單和菜單項添加圖片,仍然是使用qrc機制+設置Icon。
這里我先給出細節:

菜單項添加了圖片文字和圖片都會顯示,菜單添加了圖片只會顯示圖片,鼠標懸停在菜單上沒有提示

來看效果:
在這里插入圖片描述
但是,鼠標懸停提示其實也可以通過toolTip這個api接口來設置~

工具欄

我們直接來看示例:
示例1:同樣也是需要setIcon,上面的過程大致已經操作過了,我們直接來講解結論:

鼠標懸停在工具欄上的QAction會有提示的

這里我們不在演示,步驟其實是跟上面一樣的~~

示例2:上面的圖片顯示其實toolBar有四個位置,那么也就是說,ToolBar中的QAction其實是可以移動的,我們來看代碼示例:
在這里插入圖片描述
我們來看效果:
在這里插入圖片描述
如果此時我們鼠標懸停在此上,鼠標就會變成另外一個符號,此時我們可以拖動這個工具欄移動,此時成為可浮動狀態。
在這里插入圖片描述
在ToolBar中,默認四個位置都是可以放的,默認QToolBar是可以浮動的,但是我們也是可以修改的~

toolbar1->setAllowedAreas(Qt::LeftToolBarArea | Qt::BottomToolBarArea);//設置只能放在左下

來看結果:
在這里插入圖片描述
當我想放在上面時,就會發現,沒有這個藍色的條條,放下鼠標鍵就會回到原先的位置。
同理,可浮動狀態也是一樣的,先來看有可浮動狀態,默認就是有可浮動狀態的~

toolbar1->setFloatable(true);//設置是否可浮動
toolbar1->setMovable(true);//設置是否可以移動

在這里插入圖片描述
可浮動狀態就是可以隨便放,反之就不能隨便放了

狀態欄

狀態欄主要用來信息的顯示。
所以我們使用狀態欄來顯示臨時信息,來看示例:
在這里插入圖片描述
我們直接來看結果:
在這里插入圖片描述
當然,為了防止多個控件在狀態欄重合到一起,addWidget函數的第一個參數是添加的控件,第二個參數是設置該控件的拉伸系數。

浮動窗口

子窗口

其實對應的就是一個鉚接部件。
我們直接來看代碼;
在這里插入圖片描述
我們來看結果:
在這里插入圖片描述
這里一定需要注意這點,QDockWidget該控件只能夠添加一個控件,需要添加多個控件的話需要借助Widget

對話框

首先,對話框是什么?是進行“短平快”的操作。例如一些提示,好比是否需要保存等等。
為什么有呢?因為此時程序不知道該怎么辦了,需要用戶做進一步的決定,隨后程序才會繼續執行!!

在最開始的時候,我們學習QT選擇的是QWidget,隨后我們又學習了QMainWindow,QDialog是我們最后一個學習的屬性!因為這個只是一個對話框,創建項目的時候并不會作為一個主要開發窗口,所以我們這里仍然是創建mainWindow。

創建QDialog有兩種方式,純代碼和圖形化的方式,我們使用圖形化的方式更加簡單,操作是我們需要創建一個繼承QDialog的類的ui文件,并使用一個按鈕打開即可:
在這里插入圖片描述
此時我們發現多出來了頭文件,源文件和ui文件。
此時我們再來具體的代碼:
在這里插入圖片描述

為什么這里創建使用的是Dialog,而不是QDialog?
因為我使用的是Dialog繼承QDialog,直接使用QDialog的話會導致不會使用ui文件來初始化。
在這里插入圖片描述

我們來看結果:
在這里插入圖片描述
問題:這兩個對話框是不是同一個?答案肯定不是,因為是new出來的,地址一般都是不一樣的,但是,我們發現這個dialog并沒有delete掉,雖然掛到了對象樹上,對象數銷毀,所有內存都會歸還,但是mainWindow一直存在,那么整個進程就還會存在,對象樹還存在,這樣就會造成內存泄漏。所以我們設置了WA_DeleteOnClose屬性,,即當我們點擊dialog右上方的叉號時,該dialog就會銷毀!

model

模態/非模態。
模態:彈出對話框,只能操作該對話框,其他操作都做不了
非模態:彈出對話框,其余操作仍然能夠進行操作的

所以,模態對話框一般會用在比較關鍵的時候。而且,上面的對話框是非模態的,因為我們點擊按鈕出現了對話框,還能夠再來操作對話框之外的界面再來生成一個對話框。如果我們想要對話框是模態的,只需要將dialog->show();換成dialog->exec();即可
在這里插入圖片描述
來看結果:
在這里插入圖片描述
此時我還想創建一個對話框的話就不讓我繼續創建了,即此時我只能夠操作第一個創建的dialog

結語

今天的內容到此為止,不足之處歡迎留言指出,感謝大家支持!!
千磨萬擊還堅韌,任爾東西南北風!
在這里插入圖片描述

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

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

相關文章

Neo4j 社區版 Mac 安裝教程

最近用到了nebulagraph圖數據庫做金融反欺詐項目,雖然nebula屬于分布式架構,但依然感覺nebula使用不太順手,這里順便研究一下neo4j這款數據庫如何,這里先從安裝開始? 一、 準備工作 確認 Java 版本要求: N…

Android Studio(2025.1.2)Gemini Agent 使用指南

Android Studio(2025.1.2)Gemini Agent 使用指南 文章目錄Android Studio(2025.1.2)Gemini Agent 使用指南1. 什么是 Gemini Agent?2. 如何啟用和配置 Gemini Agent2.1 獲取 API Key2.2 在 Android Studio 中配置3. 實…

計算機視覺--opencv(代碼詳細教程)

在計算機視覺的廣袤領域中,OpenCV 是一座極為關鍵的里程碑。無論是在前沿的學術研究,還是在蓬勃發展的工業界,OpenCV 憑借其強大的功能與高效的性能,為開發者提供了豐富的圖像處理和計算機視覺算法,助力無數項目落地。…

Centos6停止服務后yum改用阿里云

環境: OS:Centos 6.9 1.進入到yum配置目錄 cd /etc/yum.repos.d 2.備份 cp CentOS-Base.repo CentOS-Base.repo.bk 3.下載 wget -O CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo 問題1: 因為Centos-6早就停止了更新維護,阿里云鏡像網站將其倉庫…

putty+Xming(XLaunch) 遠程登錄VirtualBox中的Ubuntu24.04,顯示圖形化(GUI)界面

測試環境:VirtualBox 7,Ubuntu24.04 desktop,Ubuntu24.04 Server(no desktop),均測試成功。 一、先測試putty遠程登錄VirtualBox中的Ubuntu,可以使用ssh、Telnet 等協議。參見拙文《ssh連接VirtualBox中的Ubuntu24.04(win11、put…

SpringBoot微頭條實戰項目

一、項目概述 微頭條是一個基于現代技術棧構建的新聞發布和瀏覽平臺,旨在為用戶提供便捷的新聞閱讀體驗和高效的新聞管理功能。該項目通過前后端分離的架構設計,實現了用戶注冊、登錄、新聞瀏覽、搜索、發布、修改和刪除等功能,同時通過JWT技…

如何給電腦換個ip地址?電腦換ip幾種方法

更換電腦的IP地址的方法取決于你的具體需求和網絡環境(是換本地局域網IP還是換對外公網IP)。以下是幾種常見的方法: 一、更換本地局域網IP地址(在同一個網絡內) 這個IP地址通常由你的路由器(或公司的網絡管…

Pytest項目_day04(Python做接口請求)

Requests包 在python中,可以使用requests包,用于做接口請求和接口測試request支持http和https簡單的get函數調用如下:r.jsonr.status_coder.textget函數的帶params用法post函數的帶params用法 post也可以和get一樣在url中傳入參數在requests包…

Flink與Kafka核心源碼詳解-目錄

Flink是Apache軟件基金會下開源的分布式流批一體計算框架,具備實時流計算和高吞吐批處理計算的大數據計算能力。本專欄內容為Flink源碼解析的記錄與分享。 本文解析的Flink源碼版本為:flink-1.19.0 以下為Flink-1.19.0-完整源碼詳解的目錄導航。 Flink-…

【VLLM篇】:原理-實現

1、VLLM vLLM是一個建立在【PagedAttention】之上的高吞吐的【分布式服務引擎】,目標是【提高吞吐量】、【提高內存利用率】(kv-cache內存利用率高達96%),它的內存管理分配方式從【固定分配】改進為【分頁管理】,類似操…

什么是 TcpCommunicationSpi

&#x1f9e9; 一、核心定位&#xff1a;什么是 TcpCommunicationSpi&#xff1f; /*** <tt>TcpCommunicationSpi</tt> is default communication SPI which uses* TCP/IP protocol and Java NIO to communicate with other nodes.*/翻譯&#xff1a;TcpCommunicat…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 詞云圖-微博評論用戶詞云圖實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解詞云圖-微博評論用戶詞云圖實現 視頻在線地…

數據結構----棧和隊列認識

目錄 棧&#xff08;后進先出&#xff09; 棧的實現 頭文件 初始化 入棧 注意&#xff1a; bool 判空 出棧----棧頂 注意 出棧頂元素&#xff0c;元素不會刪除 注意&#xff1a; 獲取棧中有效個數 銷毀棧 源文件操作 用棧實現遞歸* 隊列&#xff08;先進先出&a…

【Kafka系列】第二篇| Kafka 的核心概念、架構設計、底層原理

在大數據和分布式系統飛速發展的今天&#xff0c;消息隊列作為高效的通信工具&#xff0c;在系統解耦、異步通信、流量削峰等方面作用顯著。 而 Kafka 這款高性能、高吞吐量的分布式消息隊列&#xff0c;在日志收集、數據傳輸、實時計算等場景中應用廣泛。 接下來&#xff0c;我…

Kafka-exporter采集參數調整方案

#作者&#xff1a;張桐瑞 文章目錄1 問題概述2 修改方案2.1修改參數2.2配置示例3 消費者組均分腳本3.1使用說明3.2腳本內容3.3實現原理說明4 KAFKA-EXPORTER流程代碼4.1KAFKA-EXPORTER拉取數據流程1 問題概述 由于kafka-exporter獲取kafka指標時間過長&#xff0c;無法通過cur…

AT32的freertos下modbus TCP移植

1.準備模板 打開雅特力官網&#xff0c;也就是帶有LwIP的示例。 下載官方源碼&#xff1a;modbus 2.移植 我這里是在這里新建兩個文件夾&#xff0c;分別是modbus與port&#xff0c;這個任意&#xff0c;只需要將必要的文件加入項目即可。 將源碼中的modbus這些都移植過來&a…

Redis面試精講 Day 16:Redis性能監控與分析工具

【Redis面試精講 Day 16】Redis性能監控與分析工具 開篇 歡迎來到"Redis面試精講"系列第16天&#xff0c;今天我們將深入探討Redis性能監控與分析工具。在大型分布式系統中&#xff0c;Redis作為關鍵的數據存儲和緩存組件&#xff0c;其性能指標直接影響整個系統的…

vue3+vue-flow制作簡單可拖拽可增刪改流程圖

實現效果實現代碼 準備工作 安裝依賴 npm install vue-flow/core npm install vue-flow/minimap //小地圖 npm install vue-flow/controls //自帶的縮放、居中、加鎖功能我這里只用到上述三個&#xff0c;還有其余的可根據實際情況配合官方文檔使用。 npm install vue-flow/bac…

itextPdf獲取pdf文件寬高不準確

正常情況下我們通過下面方式獲取寬高PdfReader reader new PdfReader(file.getPath()); float width reader.getPageSize(1).getWidth(); float height reader.getPageSize(1).getHeight();但是這樣獲取的寬高是不準確的&#xff0c;永遠都是 寬 > 高&#xff0c;也就是橫…

NodeJs學習日志(2):windows安裝使用node.js 安裝express,suquelize,mysql,nodemon

windows安裝使用node.js 安裝express&#xff0c;suquelize&#xff0c;mysql&#xff0c;nodemon 系統是win10&#xff0c;默認已經安裝好nodejs與npm包名作用expressWeb應用框架suquelize數據庫ORMmysql數據庫nodemon代碼熱重載安裝express 添加express生成器 npm add expres…