【QT】輸入類控件

目錄

Line Edit

核心屬性

核心信號

正則表達式

示例:使用正則表達式驗證輸入框內容?

示例:切換輸入框密碼模式下的顯示狀態

Text Edit

核心屬性

核心信號

示例:獲取多行輸入框的內容同步顯示到label

示例:獲取文本的選中范圍

Combo Box

核心屬性

核心方法

核心信號

示例:通過讀取文件獲取選項內容?

QString和std::string相互轉換

Spin Box

QSpinBox關鍵屬性

核心信號

Date Edit & Time Edit

核心屬性

關于 本地時間(LocalTime) 和 協調世界時(UTC)

核心信號

QDateTime

示例:計算兩個日期的差值

Dial

核心屬性

核心信號

Slider

核心屬性?

核心信號

自定義快捷鍵 **


Line Edit

QLineEdit 用 來表示單?輸?框. 可以輸??段文本, 但是不能換?.

核心屬性

屬性說明
text
輸?框中的?本
inputMask
輸?內容格式約束
maxLength
最??度
frame
是否添加邊框
echoMode
顯示方式.
  1. QLineEdit::Normal :這是默認值,?本框會顯?輸?的?本。
  2. QLineEdit::Password :在這種模式下,輸?的字符會被隱藏通常?星號(*)或等號(=)代替。
  3. QLineEdit::NoEcho :在這種模式下,?本框不會顯?任何輸?的字符。
cursorPosition
光標所在位置
alignment
?字對??式, 設置?平和垂直?向的對?.
dragEnabled
是否允許拖拽
readOnly
是否是只讀的(不允許修改)
placeHolderText
當輸?框內容為空的時候, 顯?什么樣的提?信息
clearButtonEnabled
是否會?動顯?出 "清除按鈕“

核心信號

屬性說明
void cursorPositionChanged(int old, int new)
當?標移動時發出此信號,old為先前的位置,new為新位置
void editingFinished()
當按返回或者回?鍵時,或者?編輯失去焦點時,發出此信號
void returnPressed()
當返回或回?鍵按下時發出此信號.
如果設置了驗證器, 必須要驗證通過, 才能觸發.
void selectionChanged()
當選中的?本改變時,發出此信號。
void textChanged(const
QString &text)
當QLineEdit中的?本改變時,發出此信號,text是新的?本。
代碼對?本的修改能夠觸發這個信號
void textEdited(const QString
&text))
當QLineEdit中的?本改變時,發出此信號,text是新的?本。
代碼對?本的修改不能觸發這個信號.

為了驗證輸入框中的內容是否滿足規則,可以使用正則表達式。

正則表達式

正則表達式?檔
正則表達式語法 | Microsoft Learn
正則表達式在線?具:
正則表達式語法測試工具 - 在線工具 (buyaocha.com)

示例:使用正則表達式驗證輸入框內容?

#include "widget.h"
#include "ui_widget.h"
#include <QRegExpValidator>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton->setEnabled(false);ui->lineEdit->setPlaceholderText("請輸入手機號");ui->lineEdit->setClearButtonEnabled(true);//這里只是注冊一個驗證器QRegExp regexp("^1\\d{10}$");ui->lineEdit->setValidator(new QRegExpValidator(regexp));}Widget::~Widget()
{delete ui;
}void Widget::on_lineEdit_textChanged(const QString &arg1)
{QString text=arg1;int pos=0;if(ui->lineEdit->validator()->validate(text,pos)==QValidator::Acceptable){//驗證通過ui->pushButton->setEnabled(true);}else{//驗證不通過ui->pushButton->setEnabled(false);}
}

示例:切換輸入框密碼模式下的顯示狀態

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lineEdit->setEchoMode(QLineEdit::Password);}Widget::~Widget()
{delete ui;
}void Widget::on_checkBox_toggled(bool checked)
{if(checked){ui->lineEdit->setEchoMode(QLineEdit::Normal);}else{ui->lineEdit->setEchoMode(QLineEdit::Password);}
}

Text Edit

與Line Edit不同的是,Text Edit表示多行輸入框,也是?個富?本 & markdown 編輯器,并且能在內容超出編輯框范圍時?動提供滾動條。

在Qt中表示多行輸入框有兩種:

QTextEdit不僅能表示純文本,還可以表示html和markdow
QPlainTextEdit只能表示純文本

核心屬性

屬性說明
markdown
輸?框內持有的內容. ?持 markdown 格式. 能夠?動的對markdown ?本進?
渲染成 html
html
輸?框內持有的內容. 可以?持?部分 html 標簽. 包括 img 和 table 等
placeHolderText
輸?框為空時提?的內容
readOnly
是否是只讀的
undoRedoEnable
是否開啟 undo / redo 功能.
按下 ctrl + z 觸發 undo 撤銷
按下 ctrl + y 觸發 redo? 撤銷的撤銷
autoFormating
開啟?動格式化.
tabstopWidth
按下縮進占多少空間
overwriteMode
是否開啟覆蓋寫模式
acceptRichText
是否接收富?本內容
verticalScrollBarPolicy
垂直?向滾動條的出現策略
  1. Qt::ScrollBarAsNeeded : 根據內容?動決定是否需要滾動條。這是默認值。
  2. Qt::ScrollBarAlwaysOff : 總是關閉滾動條。
  3. Qt::ScrollBarAlwaysOn : 總是顯?滾動條。
horizontalScrollBarPolicy
?平?向滾動條的出現策略
  1. Qt::ScrollBarAsNeeded : 根據內容?動決定是否需要滾動條。這是默認 值。
  2. Qt::ScrollBarAlwaysOff : 總是關閉滾動條。
  3. Qt::ScrollBarAlwaysOn : 總是顯?滾動條。

核心信號

信號說明
textChanged()
?本內容改變時觸發
selectionChanged()
選中范圍改變時觸發
cursorPositionChanged()
光標移動時觸發
undoAvailable(bool)
可以進? undo 操作時觸發
redoAvailable(bool)
可以進? redo 操作時觸發
copyAvaiable(bool)
?本被選中/取消選中時觸發

示例:獲取多行輸入框的內容同步顯示到label

void Widget::on_textEdit_textChanged()
{QString text=ui->textEdit->toPlainText();ui->label->setText(text);
}

示例:獲取文本的選中范圍

Edit中有一個屬性

QTextCursor cursor = ui->textEdit->textCursor();

返回的QTextCursor對象描述的就是光標的一些情況

void Widget::on_textEdit_selectionChanged()
{QTextCursor cursor=ui->textEdit->textCursor();qDebug()<<"選中的文本是:"<<cursor.selectedText();
}

Combo Box

QComboBox 表?下拉框

核心屬性

屬性說明
currentText
當前選中的?本
currentIndex
當前選中的條?下標
從 0 開始計算. 如果當前沒有條?被選中, 值為 -1
editable
是否允許修改
設為 true 時, QComboBox 的?為就?常接近 QLineEdit , 也可以
設置 validator
iconSize
下拉框圖標 (?三?) 的??
maxCount
最多允許有多少個條?

核心方法

方法說明
addItem(const QString&)
添加?個條?
currentIndex()
獲取當前條?的下標
從 0 開始計算. 如果當前沒有條?被選中, 值為 -1
currentText()
獲取當前條?的?本內容

核心信號

方法說明
activated(int)
activated(const QString & text)
當??選擇了?個選項時發出.
這個時候相當于??點開下拉框, 并且?標劃過某個選項.
此時還沒有確認做出選擇.
currentIndexChanged(int)
currentIndexChanged(const QString & text)
當前選項改變時發出.
此時??已經明確的選擇了?個選項.
??操作或者通過程序操作都會觸發這個信號
editTextChanged(const QString &
text)
當編輯框中的?本改變時發出
(editable 為 true 時有效)

示例:通過讀取文件獲取選項內容?

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <fstream>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//?C:/Users/L/Desktop/config.txtstd::ifstream file("C:/Users/L/Desktop/config.txt");if(!file.is_open()){qDebug()<<"文件打開失敗";return;}std::string line;while(std::getline(file,line)){ui->comboBox->addItem(QString::fromStdString(line));}file.close();
}Widget::~Widget()
{delete ui;
}

QString和std::string相互轉換

std::string? 轉 QString

QString::fromStdString(line);

QString?轉?std::string

QString s;

std::string str=s.toStdString();

Spin Box

使? QSpinBox 或者 QDoubleSpinBox 表? "微調框", 它是帶有按鈕的輸?框. 可以?來輸?整
數/浮點數. 通過點擊按鈕來修改數值大小.
兩者用法類似,這里介紹Spin Box.

QSpinBox關鍵屬性

屬性說明
value
存儲的數值
singleStep
每次調整的 "步?". 按下?次按鈕數據變化多少
displayInteger
數字的進制. 例如 displayInteger 設為 10, 則是按照 10 進制表?. 設為 2 則為 2 進制表?
minimum
最?值
maximum
最?值
suffix
后綴
prefix
前綴
wrapping
是否允許換?
frame
是否帶邊框
alignment
?字對??式
readOnly
是否允許修改
buttonSymbol
按鈕上的圖標.
  1. UpDownArrows 上下箭頭形式
  2. PlusMinus 加減號形式
  3. NoButtons 沒有按鈕
accelerated (加速的)
按下按鈕時是否為快速調整模式
correctionMode
輸?有誤時如何修正.
  1. QAbstractSpinBox::CorrectToPreviousValue : 如果??輸?了?個?效的值(例如,在只能顯?正整數的SpinBox中輸?了負數),那么SpinBox會恢復為上?個有效值。例如,如果SpinBox的初始值是1,??輸?了-1(?效),然后SpinBox會恢復為1。
  2. QAbstractSpinBox::CorrectToNearestValue : 如果??輸?了?個?效的值,SpinBox會恢復為最接近的有效值。例如,如果SpinBox的初始 值是1,??輸?了-1(?效),那么SpinBox會恢復為0。
keyboardTrack
是否開啟鍵盤跟蹤.
  1. 設為 true, 每次在輸?框輸??個數字, 都會觸發?次 valueChanged() 和 textChanged() 信號.
  2. 設為 false, 只有在最終按下 enter 或者輸?框失去焦點, 才會觸發 valueChanged() 和 textChanged() 信號

核心信號

信號說明
textChanged(QString)
微調框的?本發?改變時會觸發.
參數 QString 帶有 前綴 和 后綴.
valueChanged(int)
微調框的?本發?改變時會觸發.
參數 int, 表?當前的數值

Date Edit & Time Edit

使? QDateEdit 作為?期的微調框.

使? QTimeEdit 作為時間的微調框

使? QDateTimeEdit 作為時間?期的微調框

這?個控件?法?常相似, 這里以 QDateTimeEdit 為例進?介紹.

核心屬性

屬性說明
dateTime
時間?期的值. 形如 2000/1/1 0:00:00
date
單純?期的值. 形如 2001/1/1
time
單純時間的值. 形如 0:00:00
displayFormat
時間?期格式. 形如 yyyy/M/d H:mm
  • y 表?年份
  • M 表??份
  • d 表??期
  • H 表??時
  • m 表?分鐘
  • s 表?秒
注意: 這?的格式化符號的含義, 不要記憶. 不同語?/庫的設定規則
是存在差異的. ?定是?的時候再去查.
minimumDateTime
最?時間?期
maximumDateTime
最?時間?期
timeSpec
  • Qt::LocalTime :顯?本地時間。
  • Qt::UTC :顯?協調世界時(UTC)。
  • Qt::OffsetFromUTC :顯?相對于UTC的偏移量(時差).

關于 本地時間(LocalTime) 和 協調世界時(UTC)

UTC 時間是?個基于原?鐘的標準時間. 不受地球的?轉周期影響. 和格林威治時間 (GMT) 是 ?常接近的. 科學家會通過精密的設備來測量并維護.
咱們的計算機內部使?的時間就是基于 UTC 時間.
本地時間則是基于不同的時區, 對 UTC 時間做出了?些調整. ?如咱們使?的北京時間, 位于
"東?區", 就需要在 UTC 時間基礎上 +8 個?時的時差

核心信號

信號說明
dateChanged(QDate)
?期改變時觸發.
timeChanged(QTime)
時間改變時觸發.
dateTimeChanged(QDateTime)
時間?期任意?個改變時觸發.

QDateTime

Qt中 QDateTime 提供了兩個函數:

daysTo :計算兩個時間的日期的差值

secsTo :計算兩個時間的秒數的差值

示例:計算兩個日期的差值

void Widget::on_pushButton_clicked()
{//1.獲取到這兩個輸入框之間的時間QDateTime timeold = ui->dateTimeEdit->dateTime();QDateTime timenew = ui->dateTimeEdit_2->dateTime();//2.計算日期的差值int seconds = timeold.secsTo(timenew);//3.把秒數換算int days = seconds/3600 /24;int hour = seconds/3600 %24;//4.顯示結果ui->label->setText(QString::number(days)+QString::number(hour));
}

這里不使用daysTo方法求兩個日期天數的差值,是因為daysTo在同一天時間到第二天0點之間會多算一天.

Dial

使? QDial 表??個 旋鈕.
有些程序, 通過?標拖動旋鈕旋轉, 即可完成?些相關的設置

核心屬性

屬性說明
value
持有的數值
minimum
最?值
maximum
最?值
singleStep
按下?向鍵的時候改變的步?
pageStep
按下 pageUp / pageDown 的時候改變的步?
sliderPosition
界?上旋鈕顯?的 初始位置
tracking
外觀是否會跟蹤數值變化.
默認值為 true. ?般不需要修改.
wrapping
是否允許循環調整.
即數值如果超過最?值, 是否允許回到最?值.
(調整過程能否 "套圈")
notchesVisible
是否顯? 刻度線
notchTarget
刻度線之間的相對位置.
數字越?, 刻度線越稀疏

核心信號

屬性說明
valueChanged(int)
數值改變時觸發
rangeChanged(int, int)
范圍變化時觸發

Slider

使? QSlider 表??個滑動條.
QSlider QDial 都是繼承? QAbstractSlider , 因此?法上基本相同.

核心屬性?

屬性說明
value
持有的數值.
minimum
最?值
maximum
最?值
singleStep
按下?向鍵的時候改變的步?
pageStep
按下 pageUp / pageDown 的時候改變的步?
sliderPosition
滑動條顯?的 初始位置
tracking
外觀是否會跟蹤數值變化.
默認值為 true. ?般不需要修改.
orientation
滑動條的?向是?平還是垂直
invertedAppearance
是否要翻轉滑動條的?向
tickPosition
刻度的位置
tickInterval
刻度的密集程度

核心信號

屬性說明
valueChanged(int)
數值改變時觸發
rangeChanged(int, int)
范圍變化時觸發

自定義快捷鍵 **

滑動條本身可以通過方向鍵和pageUp和pageDown操作,但是我們也可以通過slot來自定義快捷鍵,

代碼示例:

#include "widget.h"
#include "ui_widget.h"
#include <QShortcut>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//創建快捷鍵QShortcut* shortCut = new QShortcut(this);shortCut->setKey(QKeySequence("="));//使用信號槽,感知到快捷鍵被按下connect(shortCut,&QShortcut::activated,this,&Widget::subValue);
}Widget::~Widget()
{delete ui;
}void Widget::subValue()
{//獲取當前值int value = ui->horizontalSlider->value();if(value >= ui->horizontalSlider->maximum()){return;}ui->horizontalSlider->setValue(value+5);
}

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

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

相關文章

三生隨記——眉筆詭事

在一個被遺忘的古鎮上&#xff0c;流傳著一個關于眉筆的詭異傳說。這個古鎮坐落在群山的環抱中&#xff0c;鮮少有人知曉它的存在。而在這片土地上&#xff0c;卻有著一件被視為詛咒之源的眉筆。 眉筆的來歷無人知曉&#xff0c;只知它在一夜之間出現在鎮上的古董店中。那支眉筆…

一文講懂npm link

前言 在本地開發npm模塊的時候&#xff0c;我們可以使用npm link命令&#xff0c;將npm 模塊鏈接到對應的運行項目中去&#xff0c;方便地對模塊進行調試和測試 用法 包鏈接是一個兩步過程&#xff1a; 1.為依賴項創建全局軟鏈npm link。一個符號鏈接&#xff0c;簡稱軟鏈&a…

0702_ARM5

練習&#xff1a;使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 發送一個字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…

c# 操作mysql的幫助類

MySqlHelper 的靜態類&#xff0c;其中包含了一些用于執行 MySQL 數據庫操作的方法。這些方法包括執行存儲過程、插入、更新、刪除操作以及執行數據庫事務查詢操作等。 該類中的方法主要有&#xff1a; ExecuteNonQuery 方法&#xff1a;用于執行存儲過程、插入、更新、刪除操…

如何降低布隆過濾器的誤判率

降低布隆過濾器的誤判率&#xff08;也稱為假陽性率&#xff09;是布隆過濾器應用中一個關鍵的問題。誤判率主要來源于哈希碰撞&#xff0c;即不同的元素可能被哈希到相同的位置。為了降低誤判率&#xff0c;可以從以下幾個方面進行優化&#xff1a; 1. 增加哈希函數的個數 原…

Asp.net Core 反射加載dll

定義一個類庫&#xff0c;定義接口 namespace Plugin {public interface IPlugin{void EllisTest();} }定義另外一個類庫&#xff0c;引用上面的類庫&#xff0c;實現接口 using Plugin;namespace UserCustom {public class Custom : IPlugin{public void EllisTest(){Conso…

二刷力扣——DP算法(子序列問題)

300. 最長遞增子序列 定義是以本元素結尾&#xff0c;所以公式初始化都好弄。但是太慢 class Solution {public int lengthOfLIS(int[] nums) {int nnums.length;int[] dp new int[n];//以自己結尾的最長遞增子序列dp[0]1;int maxzi1;for(int i1;i<n;i){dp[i]1;for(int j…

QT中QDomDocument讀寫XML文件

一、XML文件 <?xml version"1.0" encoding"UTF-8"?> <Begin><Type name"zhangsan"><sex>boy</sex><school>Chengdu</school><age>18</age><special>handsome</special>&l…

【YOLOv5進階】——引入注意力機制-以SE為例

聲明&#xff1a;筆記是做項目時根據B站博主視頻學習時自己編寫&#xff0c;請勿隨意轉載&#xff01; 一、站在巨人的肩膀上 SE模塊即Squeeze-and-Excitation 模塊&#xff0c;這是一種常用于卷積神經網絡中的注意力機制&#xff01;&#xff01; 借鑒代碼的代碼鏈接如下&a…

在C#中使用RabbitMQ做個簡單的發送郵件小項目 _

前言 好久沒有做項目了&#xff0c;這次做一個發送郵件的小項目。發郵件是一個比較耗時的操作&#xff0c;之前在我的個人博客里面回復評論和友鏈申請是會通過發送郵件來通知對方的&#xff0c;不過當時只是簡單的進行了異步操作。那么這次來使用RabbitMQ去統一發送郵件&#x…

vue中路由來回切換頁面直接卡死

今天發現一個很嚴重的問題&#xff0c;項目好不容易做好了&#xff0c;結果頁面多了&#xff0c;切換之后卡死。頁面所有的交互效果都失效了。 排查了許久的錯誤原因最后發現原來是路由名稱重復了。 如上圖當頁面跳轉到riskdetails詳細頁面之后&#xff0c;框架則被這個詳情頁…

隨機森林R語言預測工具

隨機森林&#xff08;Random Forest&#xff09;是一種基于決策樹的集成學習方法&#xff0c;它通過構建多個決策樹并集成它們的預測結果來提高預測的準確性。在R語言中&#xff0c;我們可以使用randomForest包來構建和訓練隨機森林模型。以下是對隨機森林的詳細介紹以及使用R語…

java高仿真數據生成器-需要的拿去

java高仿真數據生成器源碼-需要的拿去 nit-random-tools 介紹&#xff1a;高仿真數據生成器 逆天開源 java 證號碼, 姓名&#xff0c;職業, 日期&#xff0c;手機號 生成器 功能列表 編號功能描述class1號 生成器NitIdcardGenerator2姓名 生成器NitChineseNameGenerator3職…

node.lib下載失敗,手動下載并配置

在無網絡環境&#xff0c;或者網絡不好的環境&#xff0c;node.lib會下載失敗&#xff0c;此時可手動下載并進行配置。 我們以 node16.17.0 為例&#xff1a; 下載地址 分別下載node.lib和headers https://registry.npmmirror.com/-/binary/node/v16.17.0/win-x64/node.lib…

目標檢測算法的技術革新與應用案例

引言 目標檢測作為計算機視覺領域中的一項關鍵技術&#xff0c;近年來取得了顯著進展。從傳統的基于特征的方法到如今的深度學習算法&#xff0c;目標檢測技術在準確性、速度和魯棒性上均實現了大幅提升。本文將深入探討目標檢測算法的技術原理、發展歷程、最新進展以及實際應…

HarmonyOS--開發者證書考試地址

初級證書&#xff1a;華為開發者學堂 高級證書&#xff1a;華為開發者學堂 對應課程&#xff1a;華為開發者學堂

Linux rpm與yum

一、rpm包管理 rpm用于互聯網下載包的打包及安裝工具&#xff0c;它包含在某些Linux分發版中。它生成具有.RPM擴展名的文件。RPM是RedHat Package Manager (RedHat軟件包管理工具&#xff09;的縮寫&#xff0c;類似windows的setup.exe&#xff0c;這一文件格式名稱雖然打上了R…

辦理北京公司注銷流程和步驟說明

公司的生命周期是多變的&#xff0c;有時候&#xff0c;業務可能會結束或者出現其他原因&#xff0c;需要注銷公司。注銷公司是一個復雜的法律過程&#xff0c;需要遵循一系列的步驟和提交特定的材料。下面我們將詳細介紹北京注銷公司的流程以及需要準備的材料&#xff0c;以幫…

《等保測評實戰指南:從評估到加固的全程解析》

在當今數字化時代&#xff0c;信息安全已成為企業生存與發展的基石。隨著網絡攻擊手段的不斷演變和復雜度的提升&#xff0c;信息系統等級保護&#xff08;簡稱“等保”&#xff09;作為國家信息安全保障體系的重要組成部分&#xff0c;其重要性日益凸顯。《等保測評實戰指南&a…

私有云統一多云管理平臺主要服務內容

私有云統一多云管理平臺&#xff0c;作為企業IT架構現代化的關鍵組成部分&#xff0c;旨在為企業提供高效、靈活、安全的云計算資源管理解決方案。這類平臺通過整合和優化不同云環境(包括私有云、公有云、混合云)的管理&#xff0c;幫助企業打破云孤島&#xff0c;實現資源的統…