做網(wǎng)站的崗位有什么好的推廣平臺
1. QLineEdit
QLineEdit 用來表示單行輸入框.可以輸入一段文本,但是不能換行
核心屬性
屬性 | 說明 |
---|---|
text | 輸入框中的文本 |
inputMask | 輸入內(nèi)容格式約束 |
maxLength | 最大長度 |
frame | 是否添加邊框 |
echoMode | 顯示方式. QLineEdit::Normal :這是默認(rèn)值,文本框會顯示輸入的文本。 QLineEdit::Password:在這種模式下,輸入的字符會被隱藏,通常用星號(*)或等號(=)代替。 QLineEdit::NoEcho:在這種模式下,文本框不會顯示任何輸入的字符。 |
cursorPosition | 光標(biāo)所在位置 |
alignment | 文字對齊方式,設(shè)置水平和垂直方向的對齊 |
dragEnabled | 是否允許拖拽 |
readOnly | 是否是只讀的(不允許修改) |
placeHolderText | 當(dāng)輸入框內(nèi)容為空的時候,顯示什么樣的提示信息 |
clearButtonEnabled | 是否會自動顯示出“清除按鈕" |
核心信號
屬性 | 說明 |
---|---|
void cursorPositionChanged(intold, int new) | 當(dāng)鼠標(biāo)移動時發(fā)出此信號,old為先前的位置,new為新位置。 |
void editingFinished() | 當(dāng)按返回或者回車鍵時,或者行編輯失去焦點時,發(fā)出此信號。 |
void returnPressed() | 當(dāng)返回或回車鍵按下時發(fā)出此信號 如果設(shè)置了驗證器,必須要驗證通過,才能觸發(fā) |
void selectionchanged() | 當(dāng)選中的文本改變時,發(fā)出此信號。 |
void textChanged(constQString &text) | 當(dāng)QLineEdit中的文本改變時,發(fā)出此信號,text是新的文本。 代碼對文本的修改能夠觸發(fā)這個信號. |
void textEdited(const Qstring&text)) | 當(dāng)QLineEdit中的文本改變時,發(fā)出此信號,text是新的文本。代碼對文本的修改不能觸發(fā)這個信號, |
代碼示例:錄入個人信息
- 在界面上創(chuàng)建三個輸入框和兩個單選按鈕,一個普通按鈕
三個輸入框的 objectName 為lineEdit_name,lineEdit_passwordlineEdit_phone
兩個單選按鈕的 objectName 為 radioButton_male,radioButton_female
按鈕的 objectName 為 pushButton
- 編寫 widget.cpp,在構(gòu)造函數(shù)中編寫初始化代碼
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 讓用戶輸入個人信息ui->lineEdit_name->setPlaceholderText("請輸入你的名字");ui->lineEdit_name->setClearButtonEnabled(true);// 輸入密碼ui->lineEdit_password->setPlaceholderText("請輸入你的密碼");ui->lineEdit_password->setClearButtonEnabled(true);// 顯示密碼的模式ui->lineEdit_password->setEchoMode(QLineEdit::Password);// 輸入電話ui->lineEdit_phone->setPlaceholderText("請輸入你的電話");ui->lineEdit_phone->setClearButtonEnabled(true);// 顯示電話號碼的格式ui->lineEdit_phone->setInputMask("000-0000-0000");}
- 繼續(xù)修改 widget.cpp,給按鈕添加 slot 函數(shù)
void Widget::on_pushButton_submit_clicked()
{QString ate=ui->radioButton_man->isChecked() ? "男" : "女";qDebug()<<"姓名:"<< ui->lineEdit_name->text();qDebug()<<"密碼:"<< ui->lineEdit_password->text();qDebug()<<"性別:"<< ate;qDebug()<<"電話:"<< ui->lineEdit_phone->text();
}
- 執(zhí)行程序,可以看到,隨著用戶輸入內(nèi)容之后,點擊按鈕,就能打印到輸入的信息
inputMask 只能進(jìn)行簡單的輸入格式校驗,實際開發(fā)中,基于正則表達(dá)式的方式是更核心的方法
正則表達(dá)式,本質(zhì)上就是一個帶有特殊字符的字符串,特殊字符用來表示另一個字符串的特征此時就可以借助正則表達(dá)式來描述出一些具有一定特點的字符串.
代碼示例:使用正則表達(dá)式驗證輸入框的數(shù)據(jù)此處要求在輸入框中輸入一個合法的電話號碼(1 開頭,11 位,全都是數(shù)字).如果驗證不通過,則確定按鈕無法點擊.
- 在界面上創(chuàng)建輸入框和一個按鈕
- 編寫 widget.cpp,把按鈕初始 enabled 設(shè)為 false.給輸入框添加驗證器,
使用 QRegExp 創(chuàng)建一個正則表達(dá)式對象。“^1\d{10}$”表示"以1開頭,后面跟上任意的10個十進(jìn)制數(shù)字”.
使用 QRegExpValidator 創(chuàng)建一個驗證器對象.Qt 中內(nèi)置了四個主要的驗證器對象
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 驗證正則表達(dá)式// 需要給單行輸入框設(shè)置驗證器,基于正則表達(dá)式完成驗證QRegExp regexp("^1\\d{10}$");// 設(shè)置驗證器ui->lineEdit->setValidator(new QRegExpValidator(regexp));}
- 編寫 widget.cpp,給 lineEdit 添加 textEdited 信號的 slot 函數(shù)
on_lineEdit_textEdited 的參數(shù)是當(dāng)前輸入框的內(nèi)容
通過 lineEdit->validator()獲取到內(nèi)置的驗證器
通過 validate 方法驗證文本是否符合要求,
第一個參數(shù)填寫的是要驗證的字符串,由于參數(shù)要求是 QString&而不是 const。QString&,需要把這個變量復(fù)制一下,
第二個參數(shù)是一個int&,是輸出型參數(shù),當(dāng)驗證的字符串不匹配時,返回這個字符串的長度.(沒有。啥實質(zhì)作用).
返回值是一個枚舉,QValidator::Acceptable 表示驗證通過QValidator::Invalid 表示驗證不通過
void Widget::on_lineEdit_textEdited(const QString &text)
{QString context=text;int pos=0;if (ui->lineEdit->validator()->validate(context,pos)==QValidator::Acceptable){// 驗證通過ui->pushButton->setEnabled(true);}else {// 驗證不通過ui->pushButton->setEnabled(false);}}
- 執(zhí)行程序,觀察效果,可以看到此時嘗試輸入字母是無法輸入的,并且只有當(dāng)輸入的內(nèi)容符合要求,確
定按鈕才能被使用.
代碼示例:驗證兩次輸入的密碼一致
- 在界面上創(chuàng)建兩個輸入框和一個label
- 編寫代碼,設(shè)置兩個輸入框的 echoMode 為 Password
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 驗證兩次輸入的密碼一致// 設(shè)置密碼格式ui->lineEdit->setEchoMode(QLineEdit::Password);ui->lineEdit_2->setEchoMode(QLineEdit::Password);
}
- 給兩個輸入框設(shè)置 textEdited slot函數(shù)
void Widget::Compare()
{// 獲取輸入的密碼QString s1 = ui->lineEdit->text();QString s2 = ui->lineEdit_2->text();if(s1.isEmpty() && s2.isEmpty()){ui->label->setText("密碼為空");}else if(s1==s2){ui->label->setText("輸入的密碼一致");}else{ui->label->setText("輸入的密碼不一致");}
}void Widget::on_lineEdit_textEdited(const QString &arg1)
{Compare();
}void Widget::on_lineEdit_2_textEdited(const QString &arg1)
{Compare();
}
- 執(zhí)行程序,觀察效果,可以看到當(dāng)兩個輸入框內(nèi)的密碼相同時,就會提示密碼相同
代碼示例:切換顯示密碼
- 創(chuàng)建一個輸入框和一個復(fù)選按鈕
- 修改 widget.cpp,設(shè)置輸入框的 echoMode為 Password
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 用復(fù)選框點擊改變密碼的顯示模式// 默認(rèn)情況下ui->lineEdit->setEchoMode(QLineEdit::Password);}
- 修改widget.cpp,給 checkBox 添加 slot 函數(shù)
void Widget::on_checkBox_toggled(bool checked)
{if(checked){ui->lineEdit->setEchoMode(QLineEdit::Normal);}else{ui->lineEdit->setEchoMode(QLineEdit::Password);}
}
- 執(zhí)行程序,可以看到切換復(fù)選框的狀態(tài),就可以控制輸入框顯示密碼
2. QTextEdit
QTextEdit 表示多行輸入框,也是一個富文本&markdown 編輯器并且能在內(nèi)容超出編輯框范圍時自動提供滾動條
核心屬性
屬性 | 說明 |
---|---|
markdown | 輸入框內(nèi)持有的內(nèi)容.支持 markdown 格式.能夠自動的對markdown 文本進(jìn)行渲染成 html |
html | 輸入框內(nèi)持有的內(nèi)容.可以支持大部分 html標(biāo)簽.包括 img和 table 等 |
placeHolderText | 輸入框為空時提示的內(nèi)容 |
readOnly | 是否是只讀的 |
undoRedoEnable | 是否開啟 undo/redo 功能 按下 ctrl+z觸發(fā) undo按下 ctrl+y觸發(fā) redo |
autoFormating | 開啟自動格式化. |
tabstopWidth | 按下縮進(jìn)占多少空間 |
overwriteMode | 是否開啟覆蓋寫模式 |
acceptRichText | 是否接收富文本內(nèi)容 |
verticalScrollBarPolicy | 垂直方向滾動條的出現(xiàn)策略 |
verticalScrollBarPolicy | 垂直方向滾動條的出現(xiàn)策略 Qt::ScrollBarAsNeeded:根據(jù)內(nèi)容自動決定是否需要滾動條。這是默認(rèn)值。 Qt::ScrollBarAlwaysOff:總是關(guān)閉滾動條。 Qt::ScrollBarAlwaysOn:總是顯示滾動條。 |
horizontalScrollBarPolicy | 水平方向滾動條的出現(xiàn)策略 Qt::ScrollBarAsNeeded:根據(jù)內(nèi)容自動決定是否需要滾動條。這是默認(rèn)值。 Qt::ScrollBarAlwaysOff:總是關(guān)閉滾動條。 Qt::ScrollBarAlwaysOn:總是顯示滾動條。 |
核心信號
信號 | 說明 |
---|---|
textChanged() | 文本內(nèi)容改變時觸發(fā) |
selectionChanged() | 選中范圍改變時觸發(fā) |
cursorPositionChanged() | 光標(biāo)移動時觸發(fā) |
undoAvailable(bool) | 可以進(jìn)行 undo 操作時觸發(fā) |
redoAvailable(bool) | 可以進(jìn)行 redo 操作時觸發(fā) |
copyAvaiable(bool) | 文本被選中/取消選中時觸發(fā) |
代碼示例: 獲取多行輸入框的內(nèi)容
- 創(chuàng)建一個多行輸入框和一個label
- 給多行輸入框添加 slot函數(shù).處理 textChanged 信號
通過 toPlainText 方法獲取到內(nèi)部的文本.
類似的,QTextEdit 還提供了 toMarkdown 和 toHtml.根據(jù)需要我們調(diào)整不同的獲取方式
void Widget::on_textEdit_textChanged()
{const QString& content = ui->textEdit->toPlainText();qDebug() << content;ui->label->setText(content);
}
- 執(zhí)行程序,可以看到當(dāng)輸入框中的內(nèi)容發(fā)生變化時,label 中的內(nèi)容同步發(fā)生改變
3. QComboBox
表示下拉框QComboBox
核心屬性
屬性 | 說明 |
---|---|
currentText | 當(dāng)前選中的文本 |
currentindex | 當(dāng)前選中的條目下標(biāo) 從 0開始計算.如果當(dāng)前沒有條目被選中,值為-1 |
editable | 是否允許修改 設(shè)為 true 時,QComboBox 的行為就非常接近 QLineEdit,也可以設(shè)置 validator |
iconSize | 下拉框圖標(biāo)(小三角)的大小 |
maxCount | 最多允許有多少個條目 |
核心方法
方法 | 說明 |
---|---|
addltem(const QString&) | 添加一個條目 |
currentindex() | 獲取當(dāng)前條目的下標(biāo) 從 0開始計算.如果當(dāng)前沒有條目被選中,值為-1 |
currentText() | 獲取當(dāng)前條目的文本內(nèi)容 |
核心信號
方法 | 說明 |
---|---|
activated(int) activated(const QString & text) | 當(dāng)用戶選擇了一個選項時發(fā)出這個時候相當(dāng)于用戶點開下拉框,并且鼠標(biāo)劃過某個選項,此時還沒有確認(rèn)做出選擇, |
currentindexChanged(int) currentindexChanged(const QString& text) | 當(dāng)前選項改變時發(fā)出. 此時用戶已經(jīng)明確的選擇了一個選項 用戶操作或者通過程序操作都會觸發(fā)這個信號 |
editTextChanged(const QString & text) | 當(dāng)編輯框中的文本改變時發(fā)出(editable 為 true 時有效) |
代碼示例:使用下拉框模擬麥當(dāng)勞點餐
- 在界面上創(chuàng)建三個下拉框,和一個按鈕,
- 編寫 widget.cpp,初始化三個下拉框的內(nèi)容
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 模擬麥當(dāng)勞點餐// 給ComboBox添加ui->comboBox->addItem("雞腿堡");ui->comboBox->addItem("巨無霸");ui->comboBox->addItem("培根書崔雙層牛堡");ui->comboBox_2->addItem("中薯條");ui->comboBox_2->addItem("麥樂雞塊");ui->comboBox_2->addItem("麥辣雞翅");ui->comboBox_3->addItem("可樂");ui->comboBox_3->addItem("雪碧");ui->comboBox_3->addItem("芬達(dá)");
}
- 編寫 widget.cpp,給按鈕添加 slot 函數(shù)
void Widget::on_pushButton_clicked()
{qDebug()<<ui->comboBox->currentText() <<", "<<ui->comboBox_2->currentText() <<", "<<ui->comboBox_3->currentText();
}
- 執(zhí)行程序,可以看到,在點擊確定按鈕時,就能獲取到當(dāng)前下拉框中選中的內(nèi)容
代碼示例2: 從文件中加載下拉框的選項很多時候下拉框的選項并非是固定的,而是通過讀取文件/讀取網(wǎng)絡(luò)獲取到的
- 在界面上創(chuàng)建一個下拉框
- 創(chuàng)建 E:/code/1.txt 文件
- 修改 widget.cpp,從文件中讀取選項
使用 ifstream 打開文件
使用 getline 讀取每一行
使用 QString::fromstdstring 把 std::string 轉(zhuǎn)成 QString
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 需要讀取文件內(nèi)容,把文件的每一行都讀出來,作為一個ComboBox 的選項std::fstream file("E:/code/1.txt");// 判斷文件是否被打開if(!file.is_open()){qDebug()<<"文件打開失敗";return;}// 按行來讀取文本std::string line;while(std::getline(file,line)){// 取到的每一行的內(nèi)容,添加的下拉菜單中ui->comboBox->addItem(QString::fromStdString(line));}file.close();
}
- 執(zhí)?程序, 可以看到?件內(nèi)容已經(jīng)被加載到下拉框中
4. QSpinBox
使用 QSpinBox 或者 QDoubleSpinBox 表示"微調(diào)框",它是帶有按鈕的輸入框.可以用來輸入整數(shù)/浮點數(shù).通過點擊按鈕來修改數(shù)值大小.
由于 SpinBox 和 QDoubleSpinBox 用法基本相同,就只介紹 SpinBox 的使用了
QSpinBox 關(guān)鍵屬性
屬性 | 說明 |
---|---|
value | 存儲的數(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 | 文字對齊方式 |
readOnly | 是否允許修改 |
buttonSymbol | 按鈕上的圖標(biāo). UpDownArrows 上下箭頭形式 PlusMinus 加減號形式 NoButtons 沒有按鈕 |
accelerated(加速的) | 按下按鈕時是否為快速調(diào)整模式 |
correctionMode | 輸入有誤時如何修正 1. QAbstractSpinBox::CorrectToPreviousValue:如果用戶輸入了一個無效的值(例如,在只能顯示正整數(shù)的SpinBox中輸入了負(fù)數(shù)),那么SpinBox會恢復(fù)為上一個有效值。例如,如果SpinBox的初始值是1,用戶輸入了-1(無效),然后SpinBox會恢復(fù)為1。 2. QAbstractSpinBox::CorrectToNearestValue:如果用戶輸入了一個無效的值,SpinBox會恢復(fù)為最接近的有效值。例如,如果SpinBox的初始值是1,用戶輸入了-1(無效),那么SpinBox會恢復(fù)為0。 |
keyboardTrack | 是否開啟鍵盤跟蹤. 設(shè)為 true,每次在輸入框輸入一個數(shù)字,都會觸發(fā)一次 valueChanged() 和textChanged()信號. 設(shè)為 false,只有在最終按下 enter 或者輸入框失去焦點,才會觸發(fā)valueChanged()和textChanged()信號 |
核心信號
信號 | 說明 |
---|---|
textChanged(QString) | 微調(diào)框的文本發(fā)生改變時會觸發(fā)參數(shù) QString 帶有 前綴 和 后綴 |
valueChanged(int) | 微調(diào)框的文本發(fā)生改變時會觸發(fā)參數(shù) int,表示當(dāng)前的數(shù)值, |
代碼示例:調(diào)整麥當(dāng)勞購物車中的份數(shù)
- 在界面上創(chuàng)建下列內(nèi)容
三個下拉框:objectName為comboBox到comboBox_3三個微調(diào)框:objectName為spinBox到spinBox_3-個按鈕:objectName為pushButton
- 編寫代碼,修改 widget.cpp,給下拉框設(shè)置初始值
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 模擬實現(xiàn)麥當(dāng)勞選餐,并且用微調(diào)框進(jìn)行需要選擇的個數(shù)// 先設(shè)置下拉框ui->comboBox->addItem("麥辣雞腿堡");ui->comboBox->addItem("巨無霸");ui->comboBox->addItem("培根書崔雙層牛堡");ui->comboBox_2->addItem("中薯條");ui->comboBox_2->addItem("麥樂雞塊");ui->comboBox_2->addItem("麥辣雞翅");ui->comboBox_3->addItem("可樂");ui->comboBox_3->addItem("雪碧");ui->comboBox_3->addItem("芬達(dá)");// 設(shè)置微調(diào)框的范圍ui->spinBox->setRange(1,5);ui->spinBox_2->setRange(1,5);ui->spinBox_3->setRange(1,5);// 設(shè)置初始值ui->spinBox->setValue(1);ui->spinBox_2->setValue(1);ui->spinBox_3->setValue(1);}
- 編寫代碼,給按鈕添加 slot 函數(shù)
void Widget::on_pushButton_clicked()
{qDebug()<<"當(dāng)前下單的內(nèi)容"<<ui->comboBox->currentText()<<","<<ui->spinBox->value()<<ui->comboBox_2->currentText()<<","<<ui->spinBox_2->value()<< ui->comboBox_3->currentText()<<","<<ui->spinBox_3->value();
}
- 執(zhí)行程序,可以看到當(dāng)用戶選擇不同的內(nèi)容時,點擊按鈕就能獲取到對應(yīng)的結(jié)果,同時我們也無法輸入一些超出范圍的非法值.
5. QDateTimeEdit
使? QDateEdit 作為?期的微調(diào)框
使用 QTimeEdit 作為時間的微調(diào)框
使用 ODateTimeEdit 作為時間日期的微調(diào)框
這幾個控件用法非常相似,我們以 QDateTimeEdit 為例進(jìn)行介紹
QDateTimeEdit 核?屬性
屬性 | 說明 |
---|---|
dateTime | 時間日期的值.形如 2000/1/1 0:00:00 |
date | 單純?nèi)掌诘闹?形如 2001/1/1 |
time | 單純時間的值.形如0:00:00 |
displayFormat | 時間日期格式.形如 yyyy/M/d H:mm
|
minimumDateTime | 最小時間日期 |
maximumDateTime | 最大時間日期 |
timeSpec |
|
核?信號
信號 | 說明 |
---|---|
dateChanged(QDate) | ?期改變時觸發(fā). |
timeChanged(QTime) | 時間改變時觸發(fā). |
dateTimeChanged(QDateTime) | 時間?期任意?個改變時觸發(fā). |
代碼示例: 實現(xiàn)日期計算器
- 在界面上創(chuàng)建兩個 QDateTimeEdit 和一個按鈕,一個label
ODateTimeEdit的objectName 為dateTimedit old 和 dateTimeEdit new
2)編寫計算按鈕的 slot 函數(shù)
- 使用 daysTo 函數(shù)可以計算兩個日期的天數(shù)
- 使用 secsTo
- 函數(shù)可以計算兩個時間的秒數(shù)
- 通過(秒數(shù) /3600)換算成小時數(shù),再余上 24 得到零幾個小時使用 Qstring::number 把整數(shù)轉(zhuǎn)成 QString 進(jìn)行拼接
void Widget::on_pushButton_clicked()
{// 首先獲取兩個日期的當(dāng)前日期QDateTime dateOld = ui->dateTimeEdit->dateTime();QDateTime dateNew = ui->dateTimeEdit_2->dateTime();qDebug()<<dateOld<<dateNew;// 計算兩個日期的差值天數(shù)//int days=dateOld.daysTo(dateNew);// 會有缺陷,如果差值小于24小時,會多算一天// 計算兩個日期的差值秒數(shù)int seconds=dateOld.secsTo(dateNew);// 計算多余的小時int hours=(seconds/3600)%24;int days=(seconds/3600)/24;// 把計算結(jié)果輸出到label中ui->label->setText(QString("持續(xù)愛你已經(jīng)")+ QString(days)+QString("天")+QString(hours)+ QString("小時"));
}
- 執(zhí)?程序, 觀察結(jié)果
6. QDial
使用 QDial 表示一個 旋鈕
核心屬性
屬性 | 說明 |
---|---|
value | 持有的數(shù)值, |
minimum | 最小值 |
maximum | 最大值 |
singleStep | 按下方向鍵的時候改變的步長 |
pageStep | 按下 pageUp/pageDown 的時候改變的步長 |
sliderPosition | 界面上旋鈕顯示的 初始位置 |
tracking | 外觀是否會跟蹤數(shù)值變化 默認(rèn)值為 true.一般不需要修改 |
wrapping | 是否允許循環(huán)調(diào)整 即數(shù)值如果超過最大值,是否允許回到最小值,(調(diào)整過程能否"套圈") |
notchesVisible | 是否顯示 刻度線 |
notchTarget | 刻度線之間的相對位置 數(shù)字越大,刻度線越稀疏 |
核心信號
屬性 | 說明 |
---|---|
valueChanged(int) | 數(shù)值改變時觸發(fā) |
rangeChanged(int, int) | 范圍變化時觸發(fā) |
代碼示例:調(diào)整窗口透明度
- 在界面上創(chuàng)建一個旋鈕和一個label
- 編寫 widget.cpp,對旋鈕初始化
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 設(shè)置可以循環(huán)旋轉(zhuǎn)ui->dial->setWrapping(true);// 設(shè)置刻度線可?ui->dial->setNotchesVisible(true);// 設(shè)置最?值為ui->dial->setMaximum(100);// 設(shè)置最?值為ui->dial->setMinimum(0);// 設(shè)置初始值為ui->dial->setValue(100);
}
- 編寫 widget.cpp,設(shè)置旋鈕的 valuechanged slot函數(shù)
void Widget::on_dial_valueChanged(int value)
{ui->label->setText(QString("當(dāng)前不透明度為: ") + QString::number(value));this->setWindowOpacity((double)value / 100);
}
- 運行程序,觀察效果,可以看到隨著拖動旋鈕旋轉(zhuǎn),不透明度發(fā)生明顯變化
7. QSlider
使? QSlider 表??個滑動條.
QSlider 和 QDial 都是繼承自 QAbstractslider,因此用法上基本相同
核心屬性
屬性 | 說明 |
---|---|
value | 持有的數(shù)值. |
minimum | 最小值 |
maximum | 最大值 |
singleStep | 按下方向鍵的時候改變的步長, |
pageStep | 按下pageUp/pageDown 的時候改變的步長, |
sliderPosition | 滑動條顯示的 初始位置 |
tracking | 外觀是否會跟蹤數(shù)值變化, 默認(rèn)值為 true.一般不需要修改. |
orientation | 滑動條的方向是水平還是垂直 |
invertedAppearance | 是否要翻轉(zhuǎn)滑動條的方向 |
tickPosition | 刻度的位置. |
tickinterval | 刻度的密集程度 |
核心信號
屬性 | 說明 |
---|---|
valueChanged(int) | 數(shù)值改變時觸發(fā) |
rangeChanged(int, int) | 范圍變化時觸發(fā) |
代碼示例: 通過自定義快捷鍵調(diào)整滑動條位置設(shè)置 -減小 value,設(shè)置=增加 value.默認(rèn)情況下滑動條****可以通過 方向鍵 或者 pageUp/pageDown 調(diào)整大小.
- 在界面上創(chuàng)建滑動條和 label
- 編寫 Widget.cpp 代碼
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 使用快捷鍵,- 和 =(也就相當(dāng)于+),來調(diào)節(jié)滾動條// 1.設(shè)置快捷鍵QShortcut *st1=new QShortcut(this);st1->setKey(QKeySequence("-"));QShortcut *st2=new QShortcut(this);st2->setKey(QKeySequence("="));// 2.用connect函數(shù)進(jìn)行信號與槽的連接connect(st1,&QShortcut::activated,this,&Widget::mudValue);connect(st2,&QShortcut::activated,this,&Widget::addValue);}void Widget::addValue()
{// 獲取當(dāng)前的數(shù)值int value=ui->horizontalSlider->value();if(value>=ui->horizontalSlider->maximum()){return;}ui->horizontalSlider->setValue(value+5);
}void Widget::mudValue()
{// 獲取當(dāng)前的數(shù)值int value=ui->horizontalSlider->value();if(value<=ui->horizontalSlider->minimum()){return;}ui->horizontalSlider->setValue(value-5);}void Widget::on_horizontalSlider_valueChanged(int value)
{ui->label->setText("當(dāng)前的數(shù)值為:"+ QString::number(value));
}