【Qt 學習筆記】Qt窗口 | 工具欄 | QToolBar的使用及說明


  • 博客主頁:Duck Bro 博客主頁
  • 系列專欄:Qt 專欄
  • 關注博主,后期持續更新系列文章
  • 如果有錯誤感謝請大家批評指出,及時修改
  • 感謝大家點贊👍收藏?評論?

Qt窗口 | 工具欄 | QToolBar的使用及說明

文章編號:Qt 學習筆記 / 48

文章目錄

  • Qt窗口 | 工具欄 | QToolBar的使用及說明
    • 一、工具欄
      • 1. 什么是工具欄
    • 二、QToolBar介紹
      • 1. 簡介
      • 2. 常用屬性
      • 3. 常用方法
    • 三、代碼創建工具欄
      • 1. 創建工具欄
      • 2. 添加快捷項
      • 3. 設置工具欄圖標
      • 4. 設置提示信息(toolTip)
      • 5. 設置工具欄初始位置
      • 6. 設置工具欄停放的邊緣
      • 7. 設置工具欄的浮動
      • 8. 設置工具欄的移動
      • 9. 文件相關代碼查看


一、工具欄

1. 什么是工具欄

工具欄是一種位于軟件或應用程序界面上方的水平欄,通常包含一系列常用工具和命令按鈕,用于快速訪問和執行常用功能。

工具欄通常通過圖標、文本或圖標加文本的形式展示工具和命令,用戶可以通過單擊這些按鈕來執行相應的操作,從而提高工作效率。

工具欄可以根據用戶的需求進行自定義,或者根據軟件的功能進行預設,以滿足不同用戶的操作習慣和工作需求。常見的工具欄包括格式工具欄、編輯工具欄、插入工具欄、繪圖工具欄等。

在這里插入圖片描述


二、QToolBar介紹

1. 簡介

QToolBar是Qt框架中的一個控件,用于在工具欄中顯示一組操作按鈕和其他控件。它提供了一種方便的方式來組織和管理應用程序中的工具和操作。

QToolBar可以包含各種類型的控件,如按鈕、下拉菜單、文本框等。可以通過添加和刪除控件來自定義工具欄的內容。

QToolBar還提供了許多內置的功能,如可拖動的工具欄、可停靠的工具欄,以及工具欄按鈕的自定義樣式等。

使用QToolBar,開發人員可以輕松地創建一個功能豐富且易于使用的工具欄,以增強應用程序的用戶體驗和功能性。

2. 常用屬性

屬性說明
movable設置工具欄是否可拖動,默認為true。
orientation設置工具欄的方向,可以是Qt::Horizontal(水平方向)或Qt::Vertical
iconSize設置工具欄上圖標的大小。
toolButtonStyle設置工具欄按鈕的樣式,可以是
Qt::ToolButtonIconOnly(僅圖標)
Qt::ToolButtonTextOnly(僅文本)
Qt::ToolButtonIconText(圖標和文本)

3. 常用方法

方法說明
addAction(action)在工具欄上添加一個操作按鈕。
addSeparator()在工具欄上添加一個分隔符。
addWidget(widget)在工具欄上添加一個自定義控件。
clear()清空工具欄上的所有控件。
insertWidget(before, widget)在指定控件之前插入一個自定義控件。
removeAction(action)從工具欄中移除一個操作按鈕。
toggleViewAction()返回一個切換工具欄顯示與隱藏的操作按鈕。
setFloatable(floatable)設置工具欄是否可浮動。
setToolButtonStyle(style)設置工具欄按鈕的樣式。
setIconSize(size)設置工具欄上圖標的大小。

三、代碼創建工具欄

1. 創建工具欄

創建工具欄,并使用addToolBar() 函數添加到窗口中

調? QMainWindow類 的 addToolBar() 函數來創建?具欄,每增加?個?具欄都需要調??次該函
數。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QToolBar>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QToolBar * toolbar = new QToolBar();this->addToolBar(toolbar);
}MainWindow::~MainWindow()
{delete ui;
}

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


2. 添加快捷項

在工具欄中添加快捷項等同于菜單項QAction(),并使用addAction()函數添加到工具欄中

//創建快捷項等同于菜單項
QAction * action1 = new QAction("新建");
QAction * action2 = new QAction("保存");//添加到工具欄中
toolbar->addAction(action1);
toolbar->addAction(action2);

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


3. 設置工具欄圖標

在阿里巴巴矢量圖標庫中進行查看合適的圖標,如下圖
在這里插入圖片描述

將圖片加入到qrc文件中,詳細步驟參考文章:qrc文件機制
在這里插入圖片描述

將圖片添加到快捷項中

//創建快捷項等同于菜單項
QAction * action1 = new QAction("新建");
//使用setIcon添加圖標
action1->setIcon(QIcon(":/new.png"));
QAction * action2 = new QAction("保存");
action2->setIcon(QIcon(":/save.png"));

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


4. 設置提示信息(toolTip)

在上述操作中,將快捷項設置圖標后,本來的文字沒有消失,默認變成toolTip的形式存在
也可以通過setToolTip的方法改變提示信息

QAction * action2 = new QAction("保存");
action2->setIcon(QIcon(":/save.png"));
action2->setToolTip("這是保存按鈕");

運行結果

在這里插入圖片描述


5. 設置工具欄初始位置

在MainWindow 提供的addToolBar()中設置工具欄的默認停靠位置

在創建?具欄的同時,也可以設置?具欄的位置,
其默認位置是在窗?的最上?,其中可以設置的位置包括:
? Qt::LeftToolBarArea 停靠在左側
? Qt::RightToolBarArea 停靠在右側
? Qt::TopToolBarArea 停靠在頂部
? Qt::BottomToolBarArea 停靠在底部
? Qt::AllToolBarAreas 以上四個位置都可停靠

//添加工具欄
QToolBar * toolbar = new QToolBar();
//創建工具欄的同時,指定工具欄在左側顯示
this->addToolBar(Qt::LeftToolBarArea ,toolbar);

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


6. 設置工具欄停放的邊緣

使用 QToolBar類 提供的 setAllowedAreas()函數 設置停靠位置。如下:

其中可以設置的位置包括:
? Qt::LeftToolBarArea 停靠在左側
? Qt::RightToolBarArea 停靠在右側
? Qt::TopToolBarArea 停靠在頂部
? Qt::BottomToolBarArea 停靠在底部
? Qt::AllToolBarAreas 以上四個位置都可停靠

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QToolBar>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QToolBar * toolbar1 = new QToolBar();QToolBar * toolbar2 = new QToolBar();this->addToolBar(toolbar1);this->addToolBar(toolbar2);QAction* action1 = new QAction("文件");QAction* action2 = new QAction("構建");toolbar1->addAction(action1);toolbar2->addAction(action2);//只運行左側停靠toolbar1->setAllowedAreas(Qt::LeftToolBarArea);//運行在左右停靠toolbar2->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
}MainWindow::~MainWindow()
{delete ui;
}

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


7. 設置工具欄的浮動

?具欄的浮動屬性可以通過 QToolBar類 提供的 setFloatable()函數 來設置。

參數:
true:浮動
false:不浮動

//允許工具欄浮動
toolbar1->setFloatable(true);
//不允許工具欄浮動
toolbar1->setFloatable(false);

8. 設置工具欄的移動

設置?具欄的移動屬性可以通過 QToolBar類 提供的 setMovable()函數 來設置。

參數:
true:移動
false:不移動

//允許工具欄移動
toolbar2->setMovable(true);
//不允許工具欄移動
toolbar2->setMovable(false);

9. 文件相關代碼查看

相關代碼請查看DuckBro的Gitee倉庫


在這里插入圖片描述

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

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

相關文章

怎么看智慧城市的發展?

智慧城市&#xff0c;就像一個擁有高度智慧和感知能力的未來城市居民&#xff0c;正在不斷地學習、適應和進化。它通過無數的眼睛&#xff08;傳感器&#xff09;和耳朵&#xff08;數據收集設備&#xff09;來觀察和傾聽城市的脈動&#xff0c;通過強大的大腦&#xff08;數據…

opencv文檔py_contours示例整理

文章目錄 目錄說明contours_begin目標什么是輪廓?如何畫等高線?輪廓逼近法contour_features目標1.Moments 時刻2. Contour Area 輪廓面積3. Contour Perimeter 輪廓周長4. Contour Approximation 輪廓近似5. Convex Hull 凸包6. Checking Convexity 檢查凸性7. Bounding Rect…

B2118 驗證子串

驗證子串 題目描述 輸入兩個字符串&#xff0c;驗證其中一個串是否為另一個串的子串。 輸入格式 兩行&#xff0c;每行一個字符串。 輸出格式 若第一個串 s 1 s_1 s1? 是第二個串 s 2 s_2 s2? 的子串&#xff0c;則輸出(s1) is substring of (s2)&#xff1b; 否則&…

Python并發與異步編程

Python的并發與異步編程是兩個不同的概念&#xff0c;但它們經常一起使用&#xff0c;以提高程序的性能和響應能力。以下是對這兩個概念的詳細講解&#xff1a; 并發編程 (Concurrency) 并發編程是指在程序中同時執行多個任務的能力。Python提供了幾種實現并發的機制&#xff…

嵌入式進階——RTC時鐘

&#x1f3ac; 秋野醬&#xff1a;《個人主頁》 &#x1f525; 個人專欄:《Java專欄》《Python專欄》 ??心若有所向往,何懼道阻且長 文章目錄 RTC時鐘原理圖PCF8563寄存器控制與狀態寄存器 設備地址I2C環境初始化RTC寄存器數據讀取RTC寄存器數據寫入RTC鬧鐘設置RTC定時器設置…

2024.5.28晚訓題解

提前預告&#xff0c;市賽初中組會考算法題&#xff0c;應該會有兩道模板題 比如DFS BFS 二分 簡單動態規劃&#xff0c;雖然我們沒學多久&#xff0c;但是模板題你還是要會寫的 A題 編輯距離 動態規劃 注意多組輸入 #include<iostream> using namespace std; int dp[1…

9、C#【進階】特性

特性 文章目錄 1、特性概念2、自定義特性 Attribute3、特性的使用4、限制自定義特性的使用范圍5、系統自帶特性1、過時特性2、調用者信息特性3、條件編譯特性4、外部dll包函數特性 1、特性概念 特性是一種允許我們向程序的程序集添加元數據的語言結構 它是用于保存程序機構信息…

【機器學習300問】103、簡單的經典卷積神經網絡結構設計成什么樣?以LeNet-5為例說明。

一個簡單的經典CNN網絡結構由&#xff1a;輸入層、卷積層、池化層、全連接層和輸出層&#xff0c;這五種神經網絡層結構組成。它最最經典的實例是LeNet-5&#xff0c;它最早被設計用于手寫數字識別任務&#xff0c;包含兩個卷積層、兩個池化層、幾個全連接層&#xff0c;以及最…

ansible批量漏洞升級openssh版本

1、ansible宿主機準備好環境&#xff0c;并寫好hosts文件 [rootoxidized ansible]# cat hosts [all] 10.10.200.33 10.10.200.34 10.10.200.35跑playbook之前記得提前發送秘鑰 ssh-copy-id 10.10.200.33/34/352、下載好安裝包&#xff0c;然后編寫yml [rootoxidized ansible]…

【實用的 IDEA 配置和操作技巧總結】

前置知識 IDEA的設置快捷鍵為ctrlalts鍵&#xff0c;后文介紹IDEA常見的配置就不再贅述這一點了。 基礎配置 取消默認打開上次項目 日常開發都會打開不同的項目&#xff0c;初次安裝IDEA之后&#xff0c;每次打開IDEA都會開啟上一次啟動的項目&#xff0c;所以我們需要進入設…

0基礎學習Mybatis系列數據庫操作框架——Mysql的Geometry數據處理之WKB方案

大綱 序列化反序列化完整TypeHandlerSQL XML完整XML Mapper測試代碼代碼 在《0基礎學習Mybatis系列數據庫操作框架——Mysql的Geometry數據處理之WKT方案》中&#xff0c;我們介紹WTK方案的優點&#xff0c;也感受到它的繁瑣和缺陷。比如&#xff1a; 需要借助ST_GeomFromText…

element+ 引入圖標報錯 Failed to resolve import “@element-plus/icons-vue“ from “

element 引入圖標報錯 Internal server error: Failed to resolve import “element-plus/icons-vue” from “src\components\TimeLine.vue”. Does the file exist? 原因&#xff1a;element-plus需要單獨引入 icons 文檔 pnpm install element-plus/icons-vue之后就可以…

350種類型、10W+量級的API,企業應該怎么管?

忽如一夜春風來&#xff0c;萬物皆可API。 在互聯網時代&#xff0c;API無處不在&#xff1a;企業對外開放的數據、服務和業務能力&#xff0c;以API的形式提供給合作方&#xff1b;企業內部應用與應用、App與App之間的通信&#xff0c;通過API進行&#xff1b;甚至應用內部的…

php 連接sqlserver步驟

1.首先要確定使用的是sqlserver的哪個版本&#xff0c;比如sqlserver2012 2.確定服務器是64位還是32位的 3.確認一下使用php的哪個版本&#xff0c;比如php7.1 SQL Server 的 Microsoft PHP 驅動程序 Microsoft Drivers for PHP 支持矩陣 - PHP drivers for SQL Server | Mi…

Flutter 中的 CupertinoTabView 小部件:全面指南

Flutter 中的 CupertinoTabView 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;CupertinoTabView 是 Cupertino 組件庫中的一個 widget&#xff0c;它用于創建 iOS 風格的標簽頁視圖。這個 widget 通常與 CupertinoTabScaffold 結合使用&#xff0c;提供了一個底部帶有…

怎么做好客戶信息管理?

根據Forrester的調查表示&#xff0c;客戶滿意度的影響可能會使某些行業的收入每年增加高達 10 億美元。而提升客戶滿意度的關鍵環節便是做好客戶信息管理。但企業在進行客戶信息管理中往往會遇到以下問題&#xff1a; 客戶信息亂&#xff1a;客戶信息存在各個 Excel表格、個人…

PMP報考條件怎么查詢?如何判定自己是否符合條件?

PMP報考條件在PMI官網上就可以查詢&#xff0c;PMP報考條件只需要符合項目管理培訓經歷和項目管理經驗兩個方面的要求即可&#xff0c;大家可以對照下方的規定判斷自己是否符合PMP報名條件 PMP報考條件 以下是PMI&#xff08;中國&#xff09;官網對于PMP報名條件的規定&…

優秀的數據分析師需要具備哪些?

在數據驅動的時代&#xff0c;數據分析師的角色越來越被重視。本文將探討優秀數據分析師必備的三大核心能力&#xff0c;并通過實際案例說明如何將這些能力轉化為業務價值&#xff0c;幫助你在職業道路上更進一步。 在數字化迅速發展的今天&#xff0c;數據分析師扮演著極其重要…

ubuntu strace命令

strace 是 Linux 系統中的一個調試工具&#xff0c;用于跟蹤并記錄系統調用&#xff08;system calls&#xff09;和信號&#xff08;signals&#xff09;。在 Ubuntu 中&#xff0c;strace 命令可以幫助開發者和系統管理員了解一個程序在運行時如何與操作系統內核進行交互&…

TypeScript常見面試題第八節

題目三十六:什么是參數解構? 一、講解視頻 TS面試題三十六:什么是參數解構? 二、題目解析 本題目考察 ts 中的解構,解構是一種特殊語法,可以將對象解構到一個或多個局部變量中,可展開操作符相反,展開是允許將一個數組展開為另一個數組,或將一個對象展開為另一個對象,…