亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Qt輸入類控件用法超詳細講解

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

1.Line Edit

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

  • 核心屬性

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

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

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

    // 槽函數(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);
    		}
    	}
    }
    
    // 功能實現(xiàn)
    {
    	// 設(shè)置按鈕默認是禁用狀態(tài)
    	ui->pushButton->setEnabled(false);
    
    	// 給lineEdit注冊一個validator
    	ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("^1\\d{10}$")));
    }
    

2.Text Edit

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

3.Combo Box

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

4.Spin Box

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

5.Date Edit && Time Edit

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

6.Dial

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

7.Slider

  • QSlider表??個滑動條
    • QSliderQDial都是繼承?QAbstractSlider,因此?法上基本相同
  • 核心屬性
    • value:持有的數(shù)值
    • minimum:最?值
    • maximum:最?值
    • singleStep:按下?向鍵的時候改變的步?
    • pageStep:按下pageUp/pageDown的時候改變的步?
    • sliderPosition:界?上旋鈕顯?的初始位置
    • tracking:外觀是否會跟蹤數(shù)值變化,默認值為true,?般不需要修改
    • orientation:滑動條的?向是?平還是垂直
    • invertedAppearance:是否要翻轉(zhuǎn)滑動條的?向
    • tickPosition:刻度的位置
    • tickInterval:刻度的密集程度
  • 核心信號
    • valueChanged(int):數(shù)值改變時觸發(fā)
    • rangeChanged(int, int):范圍變化時觸發(fā)
  • 示例:通過?定義快捷鍵調(diào)整滑動條位置
    • 使?QShortCut類設(shè)置快捷鍵
    • 快捷鍵觸發(fā)時,會發(fā)出QShortcut::activated信號,連接到??寫的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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論