欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt輸入類控件用法超詳細(xì)講解

 更新時(shí)間:2024年08月13日 10:40:42   作者:DieSnowK  
Qt是一個(gè)著名的GUI框架,用來開發(fā)和用戶交互的圖形界面,作為GUI框架,豐富的控件和靈活的事件機(jī)制是不可或缺的,Qt在這一方面做得非常優(yōu)秀,下面這篇文章主要給大家介紹了關(guān)于Qt輸入類控件用法的相關(guān)資料,需要的朋友可以參考下

1.Line Edit

  • QLineEdit?來表?單?輸?框,可以輸??段?本,但是不能換?

  • 核心屬性

    • text:輸入框中的文本
    • inputMask:輸入內(nèi)容格式約束
      • inputMask只能進(jìn)?簡(jiǎn)單的輸?格式校驗(yàn)
      • 實(shí)際開發(fā)中,基于正則表達(dá)式的?式是更核?的?法
    • maxLength:最大長(zhǎng)度
    • frame:是否添加邊框
    • echoMode:顯示方式
      • QLineEdit::Normal默認(rèn)值,?本框會(huì)顯?輸?的?本
      • QLineEdit::Password:在這種模式下,輸?的字符會(huì)被隱藏, 通常?星號(hào)(*)或等號(hào)(=)代替
      • QLineEdit::NoEcho:在這種模式下,?本框不會(huì)顯?任何輸?的字符
    • cursorPosition:光標(biāo)所在的位置
    • alignment:文字對(duì)齊方式,設(shè)置水平和垂直方向的對(duì)齊
    • dragEnabled:是否允許拖拽
    • readOnly:是否是只讀的
    • placeHolderText:當(dāng)輸入框內(nèi)容為空的時(shí)候,顯示什么樣的提示信息
    • clearButtonEnabled:是否會(huì)自動(dòng)顯示出"清除按鈕"
  • 核心信號(hào)

    • void cursorPositionChanged(int old, int new):當(dāng)?標(biāo)移動(dòng)時(shí)發(fā)出此信號(hào)
      • old為先前的位置,new為新位置
    • void editingFinished():當(dāng)按返回或者回?鍵時(shí),或者?編輯失去焦點(diǎn)時(shí),發(fā)出此信號(hào)
    • void returnPressed():當(dāng)返回或回?鍵按下時(shí)發(fā)出此信號(hào)
      • 如果設(shè)置了驗(yàn)證器,必須要驗(yàn)證通過,才能觸發(fā)
    • void selectionChanged():當(dāng)選中的?本改變時(shí),發(fā)出此信號(hào)
    • void textChanged(const QString &text):當(dāng)QLineEdit的?本改變時(shí),發(fā)出此信號(hào)
      • text是新的?本,代碼對(duì)?本的修改夠觸發(fā)這個(gè)信號(hào)
    • void textEdited(const QString &text)):當(dāng)QLineEdit中?本改變時(shí),發(fā)出此信號(hào)
      • text是新的?本,代碼對(duì)?本的修改不能觸發(fā)這個(gè)信號(hào)
  • 示例:對(duì)輸入框內(nèi)容進(jìn)行驗(yàn)證

    • QRegExp創(chuàng)建?個(gè)正則表達(dá)式對(duì)象
    • QRegExpValidator創(chuàng)建?個(gè)驗(yàn)證器對(duì)象,Qt中內(nèi)置了四個(gè)主要的驗(yàn)證其對(duì)象
      • QRegularExpressionValidator在匹配性能上做出了?定優(yōu)化,但是從使??度講,和QRegExpValidator差別不?

    // 槽函數(shù)實(shí)現(xiàn)
    {
    	void Widget::on_lineEdit_textEdited(const QString &arg1)
    	{
    		QString content = arg1;
    		int pos = 0;
    
    		if(ui->lineEdit->validator()->validate(content, pos)
    			== QValidator::Acceptable)
    		{
    			ui->pushButton->setEnabled(true);
    		}
    		else
    		{
    			ui->pushButton->setEnabled(false);
    		}
    	}
    }
    
    // 功能實(shí)現(xiàn)
    {
    	// 設(shè)置按鈕默認(rèn)是禁用狀態(tài)
    	ui->pushButton->setEnabled(false);
    
    	// 給lineEdit注冊(cè)一個(gè)validator
    	ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("^1\\d{10}$")));
    }
    

2.Text Edit

  • QTextEdit表?多?輸?框
    • 是?個(gè)富?本&Markdown編輯器,并且能在內(nèi)容超出編輯框范圍時(shí)?動(dòng)提供滾動(dòng)條
  • 核心屬性
    • markdown:輸?框內(nèi)持有的內(nèi)容,?持Markdown格式,能夠?動(dòng)地對(duì)Markdown?本進(jìn)?渲染成html
    • html:輸?框內(nèi)持有的內(nèi)容,可以?持?部分html標(biāo)簽,包括img和table等
    • placeHolderText:輸?框?yàn)榭諘r(shí)提?的內(nèi)容
    • readOnly:是否是只讀的
    • undoRedoEnable:是否開啟undo/redo功能
      • 按下Ctrl + z觸發(fā)undo
      • 按下Ctrl + y觸發(fā)redo
    • autoFormating:開啟自動(dòng)格式化
    • tabstopWidth:按下縮進(jìn)占多少控件
    • overwriteMode:是否開啟覆蓋寫模式
      • 對(duì)應(yīng)鍵盤上insert鍵開啟的功能
    • acceptRichText:是否接受富文本內(nèi)容
    • verticalScrollBarPolicy:垂直?向滾動(dòng)條的出現(xiàn)策略
      • Qt::ScrollBarAsNeeded默認(rèn)值,根據(jù)內(nèi)容?動(dòng)決定是否需要滾動(dòng)條
      • Qt::ScrollBarAlwaysOff:總是關(guān)閉滾動(dòng)條
      • Qt::ScrollBarAlwaysOn:總是顯?滾動(dòng)條
    • horizontalScrollBarPolicy:?平?向滾動(dòng)條的出現(xiàn)策略
      • Qt::ScrollBarAsNeeded默認(rèn)值,根據(jù)內(nèi)容?動(dòng)決定是否需要滾動(dòng)條
      • Qt::ScrollBarAlwaysOff:總是關(guān)閉滾動(dòng)條
      • Qt::ScrollBarAlwaysOn:總是顯?滾動(dòng)條
  • 核心信號(hào)
    • textChanged():?本內(nèi)容改變時(shí)觸發(fā)
    • selectionChanged():選中范圍改變時(shí)觸發(fā)
    • cursorPositionChanged():光標(biāo)移動(dòng)時(shí)觸發(fā)
    • undoAvailable(bool):可以進(jìn)?undo操作時(shí)觸發(fā)
    • redoAvailable(bool):可以進(jìn)?redo操作時(shí)觸發(fā)
    • copyAvaiable(bool):?本被選中/取消選中時(shí)觸發(fā)

3.Combo Box

  • QComboBox表?下拉框
  • 核心屬性
    • currentText:當(dāng)前選中的文本
    • currentIndex:當(dāng)前選中的條目下標(biāo)
      • 從0開始計(jì)算
      • 如果當(dāng)前沒有條?被選中,值為-1
    • editable:是否允許修改
      • 設(shè)為true時(shí),QComboBox的?為就?常接近QLineEdit,也可以設(shè)置validator
    • iconSize:下拉框圖標(biāo)(小三角)的大小
    • maxCount:最多允許有多少個(gè)條目
  • 核心方法
    • addItem(const QString&):添加?個(gè)條?
    • currentIndex():獲取當(dāng)前條?的下標(biāo)
      • 從0開始計(jì)算
      • 如果當(dāng)前沒有條?被選中,值為-1
    • currentText():獲取當(dāng)前條?的?本內(nèi)容
  • 核心信號(hào)
    • activated(int):當(dāng)??選擇了?個(gè)選項(xiàng)時(shí)發(fā)出
    • activated(constQString&text):這個(gè)時(shí)候相當(dāng)于??點(diǎn)開下拉框,并且?標(biāo)劃過某個(gè)選項(xiàng),此時(shí)還沒有確認(rèn)做出選擇
    • currentIndexChanged(int):當(dāng)前選項(xiàng)改變時(shí)發(fā)出
    • currentIndexChanged(const QString& text):此時(shí)??已經(jīng)明確的選擇了?個(gè)選項(xiàng),??操作或者通過程序操作都會(huì)觸發(fā)這個(gè)信號(hào)
    • editTextChanged(constQString& text):當(dāng)編輯框中的?本改變時(shí)發(fā)出
      • editabletrue時(shí)有效

4.Spin Box

  • QSpinBox或者QDoubleSpinBox表?**“微調(diào)框”**
    • 它是帶有按鈕的輸?框,可以?來輸?整數(shù)/浮點(diǎn)數(shù),通過點(diǎn)擊按鈕來修改數(shù)值??
  • 關(guān)鍵屬性
    • value:存儲(chǔ)的數(shù)值
    • singleStep:每次調(diào)整的"步?",即按?次按鈕數(shù)據(jù)變化多少
    • displayInteger:數(shù)字的進(jìn)制
      • 例如displayInteger設(shè)為10則是按照10進(jìn)制表?,設(shè)為2則為2進(jìn)制表?.
    • minimum:最?值
    • maximum:最?值
    • suffix:后綴
    • prefix:前綴
    • wrapping:是否允許換?
    • frame:是否帶邊框
    • alignment:?字對(duì)??式.
    • readOnly:是否允許修改
    • buttonSymbol:按鈕上的圖標(biāo)
      • UpDownArrows:上下箭頭形式
      • PlusMinus:加減號(hào)形式
      • NoButtons:沒有按鈕
    • accelerated:按下按鈕時(shí)是否為快速調(diào)整模式
    • correctionMode:輸?有誤時(shí)如何修正
      • QAbstractSpinBox::CorrectToPreviousValue
        • 如果??輸?了?個(gè)?效的值,那么SpinBox會(huì)恢復(fù)為上?個(gè)有效值
        • 例如:如果SpinBox的初始值是1,??輸?了-1(?效),然后SpinBox會(huì)恢復(fù)為1
      • QAbstractSpinBox::CorrectToNearestValue
        • 如果??輸?了?個(gè)?效的值,SpinBox會(huì)恢復(fù)為最接近的有效值
        • 例如:如果SpinBox的初始值是1,??輸?了-1(?效),那么SpinBox會(huì)恢復(fù)為0
    • keyboardTrack:是否開啟鍵盤跟蹤
      • true:每次在輸?框輸??個(gè)數(shù)字,都會(huì)觸發(fā)?次valueChanged()textChanged()信號(hào)
      • false,只有在最終按下Enter或者輸?框失去焦點(diǎn),才會(huì)觸發(fā)valueChanged()textChanged()信號(hào)
  • 核心信號(hào)
    • textChanged(QString):微調(diào)框的?本發(fā)?改變時(shí)會(huì)觸發(fā)
      • 參數(shù)QString帶有前綴和后綴
    • valueChanged(int):微調(diào)框的?本發(fā)?改變時(shí)會(huì)觸發(fā)
      • 參數(shù)int,表?當(dāng)前的數(shù)值

5.Date Edit && Time Edit

  • QDateEdit?期的微調(diào)框
  • QTimeEdit時(shí)間的微調(diào)框
  • QDateTimeEdit時(shí)間?期的微調(diào)框
  • 這?個(gè)控件?法?常相似,以QDateTimeEdit為例進(jìn)?介紹
  • 核心屬性
    • dateTime:時(shí)間?期的值,形如2000/1/1 0:00:00
    • date:?jiǎn)渭?期的值,形如2000/1/1
    • time:?jiǎn)渭儠r(shí)間的值,形如0:00:00
    • displayFormat:時(shí)間?期格式,形如yyyy/M/d H:mm
    • minimumDateTime:最?時(shí)間?期
    • maximumDateTime:最?時(shí)間?期
    • timeSpec
      • Qt::LocalTime :顯?本地時(shí)間
      • Qt::UTC :顯?協(xié)調(diào)世界時(shí)(UTC)
      • Qt::OffsetFromUTC :顯?相對(duì)于UTC的偏移量(時(shí)差)
  • 核心信號(hào)
    • dateChanged(QDate):?期改變時(shí)觸發(fā)
    • timeChanged(QTime):時(shí)間改變時(shí)觸發(fā)
    • dateTimeChanged(QDateTime):時(shí)間?期任意?個(gè)改變時(shí)觸發(fā)
  • 示例:日期計(jì)算器
    • 使?daysTo()可以計(jì)算兩個(gè)?期的天數(shù)
    • 使?secsTo()可以計(jì)算兩個(gè)時(shí)間的秒數(shù)
    • 通過(seconds/3600)換算成?時(shí)數(shù),再%24得到零?個(gè)?時(shí)
    • 使?QString::number把整數(shù)轉(zhuǎn)成QString進(jìn)?拼接
    void Widget::on_pushButton_clicked()
    {
    	QDateTime timeOld = ui->dateTimeEdit_old->dateTime();
    	QDateTime timeNew = ui->dateTimeEdit_new->dateTime();
    
    	// int days = timeOld.daysTo(timeNew); // 實(shí)際上這樣換算有bug
    	int days = (timeOld.secsTo(timeNew) / 3600) / 24;
    	int hours = (timeOld.secsTo(timeNew) / 3600) % 24;
    	
    	QString text = QString("間隔為") + QString::number(days) + QString("天 ") 
    				 + QString::number(hours) + QString("個(gè)?時(shí)!");
    
    	ui->label->setText(text);
    }
    

6.Dial

  • QDial表??個(gè)旋鈕
  • 核心屬性
    • value:持有的數(shù)值
    • minimum:最?值
    • maximum:最?值
    • singleStep:按下?向鍵的時(shí)候改變的步?
    • pageStep:按下pageUp/pageDown的時(shí)候改變的步?
    • sliderPosition:界?上旋鈕顯?的初始位置
    • tracking:外觀是否會(huì)跟蹤數(shù)值變化,默認(rèn)值為true,?般不需要修改
    • wrapping:是否允許循環(huán)調(diào)整,即數(shù)值如果超過最?值,是否允許回到最?值
      • 即:調(diào)整過程能否"套圈"
    • notchesVisible:是否顯?刻度線
    • notchTarget:刻度線之間的相對(duì)位置,數(shù)字越?,刻度線越稀疏
  • 核心信號(hào)
    • valueChanged(int):數(shù)值改變時(shí)觸發(fā)
    • rangeChanged(int, int):范圍變化時(shí)觸發(fā)

7.Slider

  • QSlider表??個(gè)滑動(dòng)條
    • QSliderQDial都是繼承?QAbstractSlider,因此?法上基本相同
  • 核心屬性
    • value:持有的數(shù)值
    • minimum:最?值
    • maximum:最?值
    • singleStep:按下?向鍵的時(shí)候改變的步?
    • pageStep:按下pageUp/pageDown的時(shí)候改變的步?
    • sliderPosition:界?上旋鈕顯?的初始位置
    • tracking:外觀是否會(huì)跟蹤數(shù)值變化,默認(rèn)值為true,?般不需要修改
    • orientation:滑動(dòng)條的?向是?平還是垂直
    • invertedAppearance:是否要翻轉(zhuǎn)滑動(dòng)條的?向
    • tickPosition:刻度的位置
    • tickInterval:刻度的密集程度
  • 核心信號(hào)
    • valueChanged(int):數(shù)值改變時(shí)觸發(fā)
    • rangeChanged(int, int):范圍變化時(shí)觸發(fā)
  • 示例:通過?定義快捷鍵調(diào)整滑動(dòng)條位置
    • 使?QShortCut類設(shè)置快捷鍵
    • 快捷鍵觸發(fā)時(shí),會(huì)發(fā)出QShortcut::activated信號(hào),連接到??寫的slot函數(shù)
    QShortcut* shortCut1 = new QShortcut(this);
    shortCut1->setKey(QKeySequence("-"));
    connect(shortCut1, &QShortcut::activated, this, &Widget::subValue);
    
    QShortcut* shortCut2 = new QShortcut(this);
    shortCut2->setKey(QKeySequence("="));
    connect(shortCut2, &QShortcut::activated, this, &Widget::addValue);

總結(jié) 

到此這篇關(guān)于Qt輸入類控件用法的文章就介紹到這了,更多相關(guān)Qt輸入類控件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論