qt:常見標簽操作,倒計時功能,進度條與日歷

1.標簽常見函數?
函數功能
void setext(const QString &text)設置文本
QString text()const獲取文本
void setPixmap(const QPixmap)與Pixmap()const設置和獲取圖像
void setAlignment(Qt::Alignment alignment)設置對齊(獲取和上面一樣)
void setWordWrap(bool on)設置是否需要文本對齊(獲取和上面一樣)
void setTextFormat(Qt::TextFormat format)設置富文本和純文本
void clear()清除
富文本包含例如超鏈接的文本
純文本沒有任何格式信息的文本
2.標簽常見文本

四種常見的文本:富文本,純文本,markdown,自動文本的顯示

    l1=new QLabel("富文本",this);l2=new QLabel("純文本",this);l3=new QLabel("markdown",this);l4=new QLabel("自動文本",this);l1->setTextFormat(Qt::RichText);l2->setTextFormat(Qt::PlainText);l3->setTextFormat(Qt::MarkdownText);l4->setTextFormat(Qt::AutoText);l1->setGeometry(300,100,100,50);l2->setGeometry(300,200,100,50);l3->setGeometry(300,300,100,50);l4->setGeometry(300,400,100,50);

?3.標簽圖片

現在來演示一下圖片標簽

  p1=new QLabel(this);QPixmap picture("D:/project/p2.jpg");QRect w=this->geometry();p1->setPixmap(picture);p1->setGeometry(0,0,w.width(),w.height());p1->setScaledContents(true);

設置圖片拉伸:重寫resizeEvent函數

在頭文件中聲明,該函數繼承于它的父類

void resizeEvent(QResizeEvent *event) override;

然后進行重寫

void MainWindow::resizeEvent(QResizeEvent *event)
{QMainWindow::resizeEvent(event);p1->setGeometry(0, 0, this->width(), this->height());}

就可以實現圖片縮放

4.利用qt designer設置文本框

在打開qtdesigner,然后在左側選中QLable的父親QFrame,將framesheet設置為box,就有框了,如果想要Label,同樣方法拖動即可

5.右上角對齊,自動換行,縮進,邊距

分布以四個標簽來展示以上四個功能

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setText("大家好");ui->label->setAlignment(Qt::AlignRight|Qt::AlignTop);ui->label_2->setText("我是c棧算法小辰哥,我是華中農業大學的一名學生,我的學院是信息學院,我的專業是計科");ui->label_2->setWordWrap(true);ui->label_3->setText("我是c棧算法小辰哥,我是華中農業大學的一名學生,我的學院是信息學院,我的專業是計科");ui->label_3->setWordWrap(true);ui->label_3->setIndent(20);ui->label_4->setText("我是c棧算法小辰哥,我是華中農業大學的一名學生,我的學院是信息學院,我的專業是計科");ui->label_4->setMargin(5);
}Widget::~Widget()
{delete ui;
}

6.伙伴機制與快捷鍵

在標簽中寫類似&鍵盤按鍵的形式,再利用setBuddy綁定一個伙伴按鈕,就可以使用Alt+鍵盤按鍵進行選中

   ui->label->setText("&A");// ui->label->setAlignment(Qt::AlignRight|Qt::AlignTop);ui->label->setBuddy(ui->radioButton);

?

7.倒計時項目

QLCDNumber是一種專門顯示數字的控件,可以利用它來寫

屬性性質
intValue顯示整數
value浮點數(設置二者方法為display)
digitCount顯示數字位數
mode

數字顯示形式:
- QLCDNumber::Dec:十進制模式,顯示常規的十進制數字。
- QLCDNumber::Hex:十六進制模式,以十六進制格式顯示數字。
- QLCDNumber::Bin:二進制模式,以二進制格式顯示數字。
- QLCDNumber::Oct:八進制模式,以八進制格式顯示數字。
只有在十進制模式下才能顯示小數點后的內容。
?

segmentStyle

設置顯示風格:
-?QLCDNumber::Flat:平面的顯示風格,數字呈現在一個平坦的表面上。
-?QLCDNumber::Outline:輪廓顯示風格,數字具有清晰的輪廓和陰影效果。
-?QLCDNumber::Filled:填充顯示風格,數字被填充顏色并與背景區分開。

不常用:smallDecimalPoint:設置較小的小數點。當啟用時,小數點將使用更小的段來表示,節省空間并提高顯示密度。

首先用qt designer拖一個QLCDNumber,將初始值設置為20

然后在頭文件里搞一個QTimer成員作為計時器,通過start方法啟動后,每個一段時間就會觸發一次QTimer::timeout信號,可以將它和Weiget::updateTime進行連接,就能實現每次觸發timeout都會有updateTime(這個函數要自己寫)

然后進行初始化和設置,具體看代碼

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);t=new QTimer(this);connect(t,&QTimer::timeout,this,&Widget::updateTime);t->start(2000);
}Widget::~Widget()
{delete ui;
}
void Widget::updateTime()
{int val=ui->lcdNumber->intValue();if(val<=0){t->stop();return;}ui->lcdNumber->display(val-1);
}

t->start表示計時器從2000毫秒也就是20秒開始計算

在遇到類似問題時,要避免循環(Widget構造函數始終無法執行完畢,界面會顯示錯誤),也不能創建一個線程去執行這個操作(任何GUI操作必須在主線程里)

8.進度條項目

QProgessBar就是進度條項目的主要部分

屬性特點
minimum最小值,默認為0
maximum最大值,默認100
value當前值
alignment文本在進度條中的對齊方式:
-?Qt::AlignLeft:左對齊
-?Qt::AlignRight:右對齊
-?Qt::AlignCenter:居中對齊
-?Qt::AlignJustify:兩端對齊
extVisible進度條的數字是否可見。設置為?true?時顯示進度數值,false?則隱藏。
orientation進度條的方向是水平還是垂直。
-?Qt::Horizontal:水平方向
-?Qt::Vertical:垂直方向
invertAppearance是否朝反方向增長進度。如果設為?true,則進度從最大值向最小值遞減。
textDirection文本的朝向。影響文本在進度條中的排列方向。
format展示的數字格式:
-?%p:表示進度的百分比(0-100)
-?%v:表示進度的數值(0-100)
-?%m:表示剩余時間(以毫秒為單位)
-?%t:表示總時間(以毫秒為單位)

為了提高編譯速度,可以使用 class 前置聲明的方式來盡量減少頭文件的包含,方法就是包含一個頭文件(#include),這個頭文件包含幾乎所有的前置聲明,如果不進行創建對象等操作,這種方式是可以的

還是老樣子,拖一個進度條在qt designer上,設置初始值為24,再用上我們之前的QTimer,然后就可以有一個進度條了

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ti=new QTimer(this);connect(ti,&QTimer::timeout,this,&Widget::updatetime);ti->start(100);
}Widget::~Widget()
{delete ui;
}
void Widget::updatetime()
{int value=ui->progressBar->value();if(value>=100){ti->stop();return;}ui->progressBar->setValue(value+1);
}

注意,改變顏色后字體須水平居中

9.日歷項目

QCalendarWidget是主體

屬性特點
selectDate當前選中的日期。
minimumDate最小日期,定義用戶可以選擇的最早日期。
maximumDate最大日期,定義用戶可以選擇的最晚日期
firstDayOfWeek每周的第一天(也就是日歷的第一列)是周幾。
gridVisible是否顯示表格的邊框,默認為?true?顯示邊框。
selectionMode是否允許選擇日期。可以設置為單選或不選。
navigationBarVisible日歷上方標題是否顯示,默認為?true?顯示導航欄。
horizontalHeaderFormat日歷上方標題顯示的日期格式,控制頂部標題欄的內容。
verticalHeaderFormat日歷第一列顯示的內容格式,控制左側垂直標題欄的內容。
dateEditEnabled是否允許日期被編輯,默認為?false?不可編輯。
信號特點
selectionChanged(const QDate&)當選中的日期發生改變時發出。參數是一個?QDate?類型,保存了新的選中日期。
activated(const QDate&)當雙擊一個有效的日期或者按下回車鍵時發出。參數是一個?QDate?類型,保存了選中的日期。
currentPageChanged(int, int)當年份月份改變時發出。參數表示改變后的新年份和月份,分別為?int?類型。

?

?

在界面上創建一個 QCalendarWidget 和一個 label,objectName 分別為 calendarWidget,label

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->calendarWidget, &QCalendarWidget::selectionChanged, this, &Widget::changedate);
}
void Widget::changedate()
{QDate d=ui->calendarWidget->selectedDate();qDebug()<<d;ui->label->setText(d.toString());
}
Widget::~Widget()
{delete ui;

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

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

相關文章

STM32MP157A單片機移植Linux驅動

在stm32mp157a單片機移植Linux操作系統&#xff0c;并移植內核驅動&#xff0c;在應用程序中使用3個線程&#xff0c;分別實現控制單片機上3個led流水燈的功能、蜂鳴器控制的功能、風扇控制的功能。 需求整理&#xff1a; 1.驅動程序-->led1.c&#xff0c;led2.c&#xff…

python中格式化輸出知識點匯總

在Python中&#xff0c;格式化輸出是一種常見的操作&#xff0c;用于將數據以特定的格式展示。以下是Python中格式化輸出的主要方法&#xff1a; ### 1. 使用 % 操作符 這是Python早期版本中常用的格式化方法&#xff0c;類似于C語言中的printf。 - **基本語法**&#xff1a;&…

完美轉發使用

完美轉發的幾個例子 例子 1&#xff1a;普通的完美轉發 首先&#xff0c;我們先來一個簡單的完美轉發的例子&#xff0c;展示如何使用 std::forward 來保持傳入參數的類型。 #include <iostream> #include <utility> // std::forwardvoid func(int& x) {st…

【Content-Type詳解、Postman中binary格式、json格式數據轉原始二進制流等】

Content-Type詳解、Postman中binary格式、json格式數據轉原始二進制流等 背景&#xff1a;postman中如何使用binary格式上傳文件 Content-TypeContent-Type的格式由三部分組成&#xff1a;以下是一些常見的Content-Type示例&#xff1a; Postman中 binary格式定義&#xff1a;用…

DeepSeek等大模型功能集成到WPS中的詳細步驟

記錄下將**DeepSeek功能集成到WPS中**的步驟&#xff0c;以備忘。 1. 下載并安裝OfficeAI插件 訪問OfficeAI插件下載地址&#xff1a;https://www.office-ai.cn/&#xff0c;下載插件&#xff08;目前只支持windows系統&#xff09;。 注意&#xff0c;有兩個插件&#xff0…

MATLAB學習之旅:從入門到基礎實踐

在當今科技飛速發展的時代,MATLAB作為一款強大的數學軟件,猶如一把神奇的鑰匙,能夠打開眾多領域的大門。無論是工程計算、數據分析,還是算法開發、可視化呈現,MATLAB都展現出了無與倫比的魅力。今天,就讓我們踏上這段奇妙的MATLAB學習之旅,從最基礎的部分開始,逐步探索…

在Ubutu18.04下搭建nfs服務器

在Ubutu18.04下搭建nfs服務器 主要參考這篇博客 Ubuntu18.04下安裝NFS詳細步驟_烏班圖安裝nfs-CSDN博客 1.安裝NFS服務&#xff1a; 服務器端&#xff1a; sudo apt install nfs-kernel-server

棧,優先級隊列,map,set

文章目錄 棧題目解析代碼 優先級隊列題解代碼 map題解代碼 set題解代碼 棧 題目解析 1.先把元素push進棧中&#xff0c;如果棧非空并且棧中的元素按順序和k相等就出棧&#xff0c;直到棧為空或者k ! sk.top() 代碼 #include<iostream> #include<stack> #include&l…

C++ Primer 類的靜態成員

歡迎閱讀我的 【CPrimer】專欄 專欄簡介&#xff1a;本專欄主要面向C初學者&#xff0c;解釋C的一些基本概念和基礎語言特性&#xff0c;涉及C標準庫的用法&#xff0c;面向對象特性&#xff0c;泛型特性高級用法。通過使用標準庫中定義的抽象設施&#xff0c;使你更加適應高級…

Java——super

在Java中&#xff0c;super關鍵字用于引用父類的成員&#xff08;屬性、方法或構造器&#xff09;。它在繼承關系中非常重要&#xff0c;主要用于以下幾種場景&#xff1a; 1. 調用父類的構造器 在子類的構造器中&#xff0c;可以使用super關鍵字調用父類的構造器。super()必須…

Unity 全局屏幕點擊特效

思路&#xff1a; 1、生成一個點擊特效實例&#xff0c;每點擊屏幕&#xff0c;就調整特效實例的位置并控制特效的顯隱狀態即可。 2、需要注意要保證在編輯器開發時或手機上運行時都要顯示點擊效果。 方案一 &#xff08;推薦&#xff09; using UnityEngine; using UnityEn…

什么是業務流程分類框架

業務流程分類框架是一個用于組織和系統化地分類業務流程的結構化方法。它旨在幫助企業理解、管理、分析和改進其運營流程。 可以把它想象成一個圖書館的圖書分類系統&#xff0c;幫助快速找到和理解不同類型的書籍。對于業務流程來說&#xff0c;分類框架幫助快速了解不同類型的…

基于springboot校園健康系統的設計與實現(源碼+文檔)

大家好我是風歌&#xff0c;今天要和大家聊的是一款基于springboot的園健康系統的設計與實現。項目源碼以及部署相關請聯系風歌&#xff0c;文末附上聯系信息 。 項目簡介&#xff1a; 基于springboot校園健康系統的設計與實現的主要使用者管理員具有最高的權限&#xff0c;通…

【Leetcode】平衡二叉樹

平衡二叉樹 題目 思路與代碼實現 常規解法&#xff1a; int max(int a,int b){return a>b?a:b;}int maxDepth(struct TreeNode* root) {if(rootNULL)return 0;return 1max(maxDepth(root->left),maxDepth(root->right)); }bool isBalanced(struct TreeNode* root)…

【AI實踐】阿里百煉文本對話Agent安卓版搭建

環境&#xff1a;安卓手機運行環境&#xff1b;WinsurfAI編程工具&#xff1b;阿里百煉提前創建Agent應用&#xff1b; 耗時&#xff1a;2小時&#xff1b; 1&#xff0c;新建安卓項目 完成文本輸入&#xff0c;并將輸入的文字顯示出來。 2&#xff0c;安裝SDK 參考文檔 安…

一文讀懂Docker之Docker Compose

目錄 一、Docker Compose簡介 二、Docker Compose的安裝和基本使用 1、Docker Compose的安裝 步驟一、下載docker-compose 步驟二、新增可執行權限 步驟三、查看是否安裝成功 2、Docker Compose的基本使用 (1)、docker-compose up (2)、docker-compose ps (3)、docke…

WordPress“更新失敗,響應不是有效的JSON響應”問題的修復

在使用WordPress搭建網站時&#xff0c;許多人在編輯或更新文章時&#xff0c;可能會遇到一個提示框&#xff0c;顯示“更新失敗&#xff0c;響應不是有效的JSON響應”。這個提示信息對于不了解技術細節的用戶來說&#xff0c;太難懂。其實&#xff0c;這個問題并不復雜&#x…

信息學奧賽一本通 1973 【16NOIP普及組】買鉛筆 | 洛谷 P1909 [NOIP 2016 普及組] 買鉛筆

【題目鏈接】 ybt 1973 【16NOIP普及組】買鉛筆 洛谷 P1909 [NOIP 2016 普及組] 買鉛筆 【題目考點】 1. 簡單數學 2. 數組 3. 向上取整 <cmath>中有函數double ceil(double x)&#xff0c;求x向上取整的值。 如果求正整數 ? a b ? \lceil \frac{a}{b} \rceil ?…

C++中的.*運算符

看運算符重載的時候&#xff0c;看到這一句 .* :: sizeof ?: . 注意以上5個運算符不能重載。 :: sizeof ?: . 這四個好理解&#xff0c;畢竟都學過&#xff0c;但.*是什么&#xff1f; 于是自己整理了一下 .* 是一種 C 中的運算符&#xff0c;稱為指針到成…

【JavaEE進階】MyBatis通過注解實現增刪改查

目錄 &#x1f343;前言 &#x1f340;打印日志 &#x1f334;傳遞參數 &#x1f38b;增(Insert) &#x1f6a9;返回主鍵 &#x1f384;刪(Delete) &#x1f332;改(Update) &#x1f333;查(Select) &#x1f6a9;起別名 &#x1f6a9;結果映射 &#x1f6a9;開啟駝…