Qt窗口(1)-菜單欄

Qt窗口

概念簡述

與QWidget的區別:

QWidget更多是作為一個窗口的一部分

基本結構構成:
在這里插入圖片描述
以Xshell舉例子比較菜單欄和工具欄:

菜單欄:
在這里插入圖片描述

工具欄:
在這里插入圖片描述
工具欄本質是把菜單欄中一些比較常用的選項,直接放到工具欄中,直接點擊工具欄中的按鈕就可以快速生效

菜單欄的使用

在這里插入圖片描述
這里需要選擇QMainWindow

通過ui文件創建菜單

創建好文件之后,打開ui文件會與之前的發生不同
在這里插入圖片描述
如這里的“在這里輸入”,這樣就可以創建菜單了

創建好菜單欄想要創建菜單項會出現bug,無法直接輸入中文,可以通過復制粘貼的方式進行,如在記事本中輸入文本,再次粘貼到對話框中

運行結果如下:
在這里插入圖片描述

使用代碼的方式創建菜單結構

代碼如下:

//1.創建一個菜單欄QMenuBar*menuBar=new QMenuBar();this->setMenuBar(menuBar);//2.創建菜單QMenu*menu1=new QMenu("文件");QMenu*menu2=new QMenu("編輯");QMenu*menu3=new QMenu("視圖");menuBar->addMenu(menu1);menuBar->addMenu(menu2);menuBar->addMenu(menu3);//3.給菜單添加菜單項QAction*action1=new QAction("新建");QAction*action2=new QAction("打開");QAction*action3=new QAction("保存");QAction*action4=new QAction("另存為");QAction*action5=new QAction("退出");menu1->addAction(action1);menu1->addAction(action2);menu1->addAction(action3);menu1->addAction(action4);menu1->addAction(action5);

運行結果如下:
在這里插入圖片描述
如何讓點擊菜單項有反應?

可以給用戶添加信號槽:

//4.給action添加信號槽connect(action1,&QAction::triggered,this,&MainWindow::handle);connect(action5,&QAction::triggered,this,&MainWindow::close);

運行結果如下:
在這里插入圖片描述

菜單添加快捷鍵

設置好快捷鍵可以結合alt使用

代碼如下:
在這里插入圖片描述
&并不會在窗口上顯示

代碼如下:

QMenuBar*menuBar=new QMenuBar();this->setMenuBar(menuBar);QMenu*menu1=new QMenu("文件(&F)");QMenu*menu2=new QMenu("視圖(&V)");menuBar->addMenu(menu1);menuBar->addMenu(menu2);QAction*action1=new QAction("action1(&Q)");QAction*action2=new QAction("action2(&W)");QAction*action3=new QAction("action3(&E)");QAction*action4=new QAction("action4(&R)");menu1->addAction(action1);menu1->addAction(action2);menu2->addAction(action3);menu2->addAction(action4);connect(action1,&QAction::triggered,this,&MainWindow::handle1);connect(action2,&QAction::triggered,this,&MainWindow::handle2);connect(action3,&QAction::triggered,this,&MainWindow::handle3);connect(action4,&QAction::triggered,this,&MainWindow::handle4);

添加子菜單

運行結果:
在這里插入圖片描述

添加分割線

運行結果:
在這里插入圖片描述

添加圖標

代碼如下:

QMenuBar*menuBar=new QMenuBar();this->setMenuBar(menuBar);QMenu*menu=new QMenu("菜單");menuBar->addMenu(menu);QAction*action1=new QAction("菜單項1");action1->setIcon(QIcon(":/open.png"));QAction*action2=new QAction("菜單項2");action2->setIcon(QIcon(":/save.png"));menu->addAction(action1);menu->addAction(action2);

運行結果如下:
在這里插入圖片描述
如果給菜單設置圖標呢?

此時只會顯示圖標,文字會被覆蓋

在這里插入圖片描述

關于創建MenuBar的討論

QMenuBar*menuBar=new QMenuBar();this->setMenuBar(menuBar);

如果沒有點擊自動勾選ui,此代碼是OK,如果勾選則會造成內存泄漏
在這里插入圖片描述
之前的程序已經自己創建了一個對象,當自己通過代碼設置的時候,舊的會從對象樹上脫離,導致資源泄漏

如果關閉的話,對象樹會結束,此進程也會結束,不會造成影響,但是如果頻繁切換窗口,會有問題

更規范的寫法:

QMenuBar*menuBar=this->menuBar();

如果存在直接返回,不存在會創建新的再返回

如果在以后工作中遇到嵌入式,內存很有限可能就不能夠泄漏內存

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

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

相關文章

弱網測試

使用軟件MAC端:Network Link ConditioneriOS端:設置->開發者->網絡鏈接調節器相關參數帶寬單位為Kbps,丟包率單位是百分比,延遲單位是msDownlink Bandwidth (輸入寬帶):設備從服務器接收數…

Nuxt 4.0 深度解析:從架構革新到實戰遷移 [特殊字符]

引言:Vue生態的"瑞士軍刀"又升級了! 如果把前端框架比作超級英雄,Nuxt.js 絕對是Vue陣營里最全能的那位——就像鋼鐵俠的戰甲不斷迭代升級,Nuxt也從最初的SSR解決方案,進化成了如今的全棧開發框架。2025年&a…

【Linux內核模塊】模塊參數詳解

玩過智能家居的朋友都知道,一盞智能燈通常有亮度調節、色溫切換的功能 —— 這些可調節的選項讓設備更靈活。其實 Linux 內核模塊也有類似的調節旋鈕,今天要聊的模塊參數。它能讓你在加載模塊時動態配置參數,不用改代碼就能實現功能切換&…

移動平板電腦安全管控方案

一、引言在數字化辦公飛速發展的當下,移動平板憑借其便攜性、靈活性及強大的功能,已成為企業辦公不可或缺的工具。無論是現場作業數據采集、移動辦公審批,還是遠程會議參與,移動平板都極大地提升了工作效率。然而,如同…

華為業務變革項目IPD基本知識

適應人群為華為內部產品開發相關人員、參與 IPD 項目實施的團隊成員及關注企業產品開發模式變革的管理者。主要內容圍繞華為 IPD 業務變革項目,介紹 IPD 基本概念(源于 PACE 理念,強調以市場需求為驅動,將產品開發作為投資管理);解析 IPD 框架(含異步開發與共用基礎模塊…

【51】MFC入門到精通——MFC串口助手(一)---初級版(串口設置、初始化、打開/關閉、狀態顯示),附源碼

文章目錄1 功能展示2 實現步驟2.1 添加控件 及 控件變量2.2 添加按鈕及靜態文本框2.3 聲明其他變量 及 函數3 函數實現3.1 初始刷函數3.2 設置串口參數3.3 打開串口函數3.4 顯示串口狀態3.5 關閉串口3.6 更改串口、波特率、校驗位、數據位、停止位3.7 串口狀態顯示4 完整代碼4.…

TBT 5、TBT 4 和 USB4 的差異概述

Thunderbolt 4 和 USB4 如今已成為筆記本電腦、電腦、電碼頭等移動電子設備中最常見的連接標準。 Thunderbolt 4 和 USB4 皆采用 USB Type-C 連接器,也因設計和功能上有許多相似之處而兼容。 這兩種技術還支持 40Gbps 的數據傳輸速度、視頻直通以及高達 240W 的電源…

算法-查找算法

下面是使用 Java 實現的四種查找算法: 線性查找(Linear Search)二分查找(Binary Search)插值查找(Interpolation Search)斐波那契查找(Fibonacci Search)? 1. 線性查找&…

二刷 黑馬點評 附近商戶

附近商戶-GEO數據結構的基本用法 GEO就是Geolocation的簡寫形式,代表地理坐標 Redis在3.2版本中加入了對GEO的支持,允許存儲地理坐標信息,幫助我們根據經緯度來檢索數據。常見的命令有:GEOADD:添加一個地理空間信息&am…

【vue-3】深入理解 Vue 3 中的 v-if 指令:條件渲染的藝術

在 Vue.js 的世界中,條件渲染是構建動態界面的核心概念之一。作為 Vue 3 中最常用的指令之一,v-if 提供了強大的能力來控制元素的顯示與隱藏。本文將深入探討 v-if 的工作原理、最佳實踐以及它在 Vue 3 中的新特性。 1. 什么是 v-if? v-if 是…

【實時Linux實戰系列】實時系統中的內存策略

在實時系統中,內存管理是確保系統性能和穩定性的重要組成部分。實時系統通常需要快速響應和低延遲,因此高效的內存管理策略對于實現這些目標至關重要。實時 Linux 提供了多種內存管理機制,如使用大型頁面(Huge Pages)和…

【C語言進階】題目練習(2)

目錄 題目6:看代碼說結果 分析: 答案:255 題目7:猜名次 分析: 題目8:猜兇手 分析: 代碼: 題目9:打印楊輝三角 思路: 代碼: 題目10:關于指針的選擇題 答案&a…

思科NAT綜合實驗

1 實驗拓撲圖2實驗目的(1)鞏固前面實驗的配置(2)掌握四種NAT的配置(3)明白四種NAT的區別3實驗步驟3.1配置邊界路由器和外網路由器的端口IP三個步驟:進入端口 打開端口 配置IP地址和子網掩碼interface f0/0 no shutdown ip address 192.168.201.2 255.255.255.03.2配…

VMC850立式加工中心Y軸傳動機械結構設計cad【7張】三維圖+設計說明書

摘 要 數控機床作為現代工業生產的重要設備,對國民經濟的發展有著重要的作用,立式加工中心作為數控加工技術的核心,通過對其研究,可以深入了解數控技術未來的發展方向。本文主要完成了VMC850立式加工中心Y軸的機械傳動結構設計&am…

mpiigaze的安裝過程一

mpiigaze鏈接 mpiigaze應該不是作者本人寫的,而是社區工作者的杰作,對原論文Appearance-Based Gaze Estimation in the Wild的代碼進行的一些復現 1.創建conda環境 2.問題 Building wheels for collected packages: dlibBuilding wheel for dlib (py…

如何將華為文件傳輸到電腦

在數字管理領域,將華為設備上的文件傳輸到電腦是高頻需求。無論為了備份、緩解手機存儲壓力,還是跨平臺訪問,把華為手機連接電腦已成為許多用戶的剛需。下面介紹 5 種高效方法,可滿足不同場景與偏好,助你輕松完成文件遷…

LP-MSPM0G3507學習--05中斷及管腳中斷

關鍵函數: NVIC_EnableIRQ(IRQn_Type IRQn):使能中斷 例5-1:單按鍵中斷方式實現led燈的亮滅 在上一講LP-MSPM0G3507學習--04GPIO控制中實現了通過按鍵控制led燈的亮滅,可以看出程序效率不高,下面采用中斷的方式實現…

mac系統安裝、啟動Jenkins,創建pytest接口自動化任務

先安裝Homebrew:mac系統安裝brew-CSDN博客 1、安裝Jenkins # 可以安裝長期支持版本 brew install jenkins-lts# 或者最新版本(我安了這個) brew install jenkins 可查看Jenkins安裝位置: # 最新版本 brew --prefix jenkins 2、…

設置第三方窗口置頂(SetWindowPos方法,vb.net)

起源在日常辦公、游戲時,我們經常需要一些窗口處于置頂狀態,而這些窗口往往是網頁端(瀏覽器)、辦公軟件(wps、office等),這些需要置頂的窗口往往自身沒有明顯的置頂開關,因此&#x…

Docker-下載和安裝

一、Linux版 1.安裝docker (1)更新軟件包索引 sudo apt update (2)安裝必要的依賴 sudo apt install apt-transport-https ca-certificates curl software-properties-common (3)添加 Docker 官方 GP…