【QT開發筆記-基礎篇】| 第二章 常用控件 | 2.4 文本框 QLineEdit
標簽: 《QT開發筆記-基礎篇》 qt c++ 物聯網 linux 嵌入式硬件
本節對應的視頻講解:B_站_鏈_接
https://www.bilibili.com/video/BV1bU4y1S7f7
QLineEdit
是 Qt
中的文本框,準確地說是單行文本框,通常用于接受用戶的輸入
比如用戶輸入用戶名、密碼等,都可以使用該控件。
1. 屬性和方法
QLineEdit
有很多屬性,完整的可查看幫助文檔。這里列出常用的屬性和方法:
1.1 占位字符串
占位字符,就是當文本框中輸入內容為空時,顯示的字符,用于提示用戶文本框中應該輸入什么內容
// 獲取和設置占位字符串
QString placeholderText() const
void setPlaceholderText(const QString &)
如下,是 QQ 登錄界面的用戶名和密碼文本框,在輸入內容為空時,提示如下:
1.2 對齊方式
用于設置文本框中的內容在水平和垂直兩個方向上的對齊方式,比如左對齊、右對齊、上對齊、下對齊、水平居中、垂直居中等。
// 獲取和設置文本的對齊方式
Qt::Alignment alignment() const
void setAlignment(Qt::Alignment flag)
其中,Qt::Alignment
是一個宏,常用取值如下:
- Qt::AlignLeft(0x0001) 水平方向-左對齊
Qt::AlignRight
(0x0002) 水平方向-右對齊Qt::AlignHCenter
(0x0004) 水平方向-居中對齊- Qt::AlignTop(0x0020)垂直方向-上對齊
Qt::AlignBottom
(0x0040)垂直方向-下對齊- Qt::AlignVCenter(0x0080)垂直方向-居中對齊
Qt::AlignCenter
(AlignVCenter
|AlignHCenter
) 垂直方向和水平方向-居中對齊
上面的每一個宏,都代表 16 進制中的一位,可以進行或(|
)操作,來同時設置多個對齊方式。
1.3 回顯模式
所謂回顯模式(EchoMode
),就是輸入的內容如何顯示
該屬性既可以在 Qt
設計師右側的屬性窗口中修改,也可以在代碼中動態地獲取和修改
// 獲取和設置回顯模式
QLineEdit::EchoMode echoMode() const
void setEchoMode(QLineEdit::EchoMode)
其中,QLineEdit::EchoMode
是一個宏,有如下 4 個取值:
-
QLineEdit::Normal
正常模式。輸入什么就顯示什么,默認就是這種方式
-
QLineEdit::Password
密碼模式。不顯示實際輸入的字符,而是以小圓圈代替,這樣別人就無法看到輸入的字符。
Do not display anything. This may be appropriate for passwords where even the length of the password should be kept secret.
-
QLineEdit::NoEcho
無回顯模式。無論輸入什么內容,在文本框中都不會顯示,這樣別人既無法看到輸入的內容,也無法知道輸入字符的長度
這對于輸入密碼非常有用,在linux下輸入密碼時,就是這種模式
-
QLineEdit::PasswordEchoOnEdit
正在輸入時顯示正常模式顯示,當失去焦點時以密碼模式顯示,也就是顯示小圓圈
1.4 讀寫控制
用于設置文本框是否可編輯、是否使能
// 獲取和設置文本框的只讀屬性
bool isReadOnly() const
void setReadOnly(bool)
// 獲取和設置文本框的是否使能
bool isEnabled() const
void setEnabled(bool)
注意:設置為只讀和設置為禁能,都無法對文本框進行編輯
區別在于,只讀時文本框不會置灰,而禁能時文本框會置灰
1.5 格式控制
用于指定文本框輸入特定格式的內容。比如輸入電話號碼格式的文本,或者輸入 IP
地址格式的文本等。
// 設置和獲取格式控制
QString inputMask() const
void setInputMask(const QString &inputMask)
接收一個 QString
類型的掩碼,常用格式如下:
- 無格式
// 接受任何字符的輸入
setInputMask("");
- 電話號碼
// 9 - 表示要求輸入0-9的數字
// ;# - 表示格式字符串結束,并且未輸入時顯示#
ui->leMask->setInputMask("99999999999;#");
- **
// 9 - 表示要求輸入0-9的數字
// ;# - 表示格式字符串結束,并且未輸入時顯示*
ui->leMask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;*");
其他更多格式使用方法,直接查看 QLineEdit
幫助文檔即可,以上列出的兩個,僅作為拋磚引玉
1.6 信號槽
QLineEdit
有多個信號和槽函數,詳情可參考官方幫助文檔,這里僅演示兩個常用的,作為拋磚引玉
textChanged
信號
// 當文本框內容改變時,發射該信號
void textChanged(const QString &text)
editingFinished
// 當輸入完畢時,發射該信號
void editingFinished()
什么叫輸入完畢呢?
答:a、按了 enter
鍵 b、文本框失去焦點
2. 案例
該案例演示,文本框的回顯模式、對齊方式、讀寫控制、校驗、格式控制,如下:
2.1 布局
在UI設計師界面,拖拽對應的控件,修改顯示的文字、控件的 name
,然后完成布局
2.2 代碼實現
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 默認正常模式回顯
on_btnEchoNormal_clicked();
// 默認左對齊
on_btnAlignLeft_clicked();
// 默認可讀可寫
on_btnAccessReadWrite_clicked();
// 默認無格式控制
on_btnMaskNone_clicked();
// 演示-textChanged信號
ui->leAdd1->setValidator(new QIntValidator(this)); // 用于設置校驗,只允許文本框中輸入整數
ui->leAdd1->setPlaceholderText("加數");
ui->leAdd2->setValidator(new QIntValidator(this));
ui->leAdd2->setPlaceholderText("被加數");
ui->leSum->setPlaceholderText("和");
// 演示-textFinished信號
ui->leSub1->setValidator(new QIntValidator(this));
ui->leSub1->setPlaceholderText("減數");
ui->leSub2->setValidator(new QIntValidator(this));
ui->leSub2->setPlaceholderText("被減數");
ui->leResult->setPlaceholderText("差");
}
Widget::~Widget()
{
delete ui;
}
// 1、回顯模式
// 1.1 正常
void Widget::on_btnEchoNormal_clicked()
{
ui->leEcho->clear();
ui->leEcho->setEchoMode(QLineEdit::Normal);
ui->leEcho->setPlaceholderText("Normal");
}
// 1.2 密碼模式
void Widget::on_btnEchoPassword_clicked()
{
ui->leEcho->clear();
ui->leEcho->setEchoMode(QLineEdit::Password);
ui->leEcho->setPlaceholderText("Password");
}
// 1.3 不回顯
void Widget::on_btnEchoNoEcho_clicked()
{
ui->leEcho->clear();
ui->leEcho->setEchoMode(QLineEdit::NoEcho);
ui->leEcho->setPlaceholderText("NoEcho");
}
// 1.4 失去焦點時為密碼模式
void Widget::on_btnEchoPasswordEchoOnEdit_clicked()
{
ui->leEcho->clear();
ui->leEcho->setEchoMode(QLineEdit::PasswordEchoOnEdit);
ui->leEcho->setPlaceholderText("PasswordEchoOnEdit");
}
// 打印輸處
void Widget::on_btnEchoPrint_clicked()
{
QMessageBox::information(this, "回顯模式", ui->leEcho->text());
}
// 2、對齊方式
// 2.1 左對齊
void Widget::on_btnAlignLeft_clicked()
{
ui->leAlignment->setAlignment(Qt::AlignLeft);
ui->leAlignment->setPlaceholderText("Left");
}
// 2.2 居中對齊
void Widget::on_btnAlignCenter_clicked()
{
ui->leAlignment->setAlignment(Qt::AlignCenter);
ui->leAlignment->setPlaceholderText("Center");
}
// 2.3 右對齊
void Widget::on_btnAlignRight_clicked()
{
ui->leAlignment->setAlignment(Qt::AlignRight);
ui->leAlignment->setPlaceholderText("Right");
}
// 3、讀寫控制
// 3.1 可讀可寫
void Widget::on_btnAccessReadWrite_clicked()
{
ui->leAccess->setReadOnly(false);
ui->leAccess->setPlaceholderText("ReadWrite");
}
// 3.2 只讀
void Widget::on_btnAccessReadOnly_clicked()
{
ui->leAccess->setReadOnly(true);
ui->leAccess->setPlaceholderText("ReadOnly");
}
// 3.3 禁能
void Widget::on_btnAccessDisabled_clicked()
{
ui->leAccess->setEnabled(false);
ui->leAccess->setPlaceholderText("Disabled");
}
// 3.4 使能
void Widget::on_btnAccessEnabled_clicked()
{
ui->leAccess->setEnabled(true);
ui->leAccess->setPlaceholderText("Enabled");
}
void Widget::on_btnAccessPrint_clicked()
{
QMessageBox::information(this, "文本框演示", ui->leAccess->text());
}
// 4、格式控制
// 4.1 無格式
void Widget::on_btnMaskNone_clicked()
{
ui->leMask->setInputMask("");
}
// 4.2 電話號碼格式
void Widget::on_btnMaskPhone_clicked()
{
// 9 - 表示要求輸入0-9的數字
// ;# - 表示格式字符串結束,并且未輸入時顯示#
ui->leMask->setInputMask("99999999999;#");
}
// 4.3 **格式
void Widget::on_btnMaskLicense_clicked()
{
// 9 - 表示要求輸入0-9的數字
// ;# - 表示格式字符串結束,并且未輸入時顯示*
ui->leMask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;*");
}
// 5、信號槽演示
// 5.1 textChanged信號 - 實現自動計算加法結果
void Widget::on_leAdd1_textChanged(const QString &arg1)
{
int sum = arg1.toInt() + ui->leAdd2->text().toInt();
ui->leSum->setText(QString::number(sum));
}
void Widget::on_leAdd2_textChanged(const QString &arg1)
{
int sum = arg1.toInt() + ui->leAdd1->text().toInt();
ui->leSum->setText(QString::number(sum));
}
// 5.2 editingFinished信號 - 實現自動計算減法結果
void Widget::on_leSub1_editingFinished()
{
int result = ui->leSub1->text().toInt() - ui->leSub2->text().toInt();
ui->leResult->setText(QString::number(result));
}
void Widget::on_leSub2_editingFinished()
{
int result = ui->leSub1->text().toInt() - ui->leSub2->text().toInt();
ui->leResult->setText(QString::number(result));
}
本節對應的視頻講解:B_站_鏈_接
https://www.bilibili.com/video/BV1bU4y1S7f7
智能推薦
【學習筆記】C++ GUI Qt4 第二章 2.4 改變形狀的對話框
這個對話框是一個用于電子制表軟件應用程序的排序對話框(Sort對話框) ,在這個對話框中,用戶可以選擇一列或多列進行排序。在這個簡單外觀中,允許用戶輸人一個單一的排序鍵,而在擴展外觀下,還額外提供了兩個排序鍵。More按鈕允許用戶在簡單外觀和擴展外觀之間切換。 我們將在Qt設計師中創建這個對話框的擴展外觀,并且在運行時根據需要隱藏排序的第二鍵和第三鍵。這個窗口部件看起來有些復雜,但在Qt設計師中可...
PyQt5之QLineEdit文本框類控件2
PyQt5之QLineEdit文本框類控件2 一、EchoMode的顯示效果 運行效果如下: 二、驗證器 運行效果如下: 三、輸入掩碼 運行效果如下: 四、綜合示例 運行效果如下:...
Qt 5——常用控件(QLable、QLineEdit、)
文章目錄 資源鏈接(工程文件) 1 QLabel控件使用 顯示文字(普通文本、html) 顯示圖片 顯示動畫 2 QLineEdit 設置/獲取內容 設置顯示模式 3 其他控件 4 自定義控件 其他控件小案例 TreeWidget TableWidget Other控件混合 資源鏈接(工程文件) https://download.csdn.net/download/weixin_45525272/...
單行文本框QLineEdit
介紹 QLabelEdit類是一個單行文本框控件,可以輸入單行字符串。如果需要輸入多行字符串,則使用QTextEdit類。 方法 QlabeL常用方法 方法 描述 setAlignment() 按固定值方法對齊文本 Qt.AlignLeft,水平方向靠左對齊 Qt.AlignRight,水平方向靠右對齊 Qt.AlignCenter,水平方向居中對齊 Qt.AlignJustify,水平方向調整間...
QLineEdit 單行文本框
QLineEdit 單行文本框,顧名思義就是只能輸入單行的文本。接下來演示一個登陸窗口的制作如圖: 一、首先要在QtDesigner中創建登陸窗口的布局,用到了Label、Line Edit和Push Button。調整用戶名和密碼的寬度,另外在Line Edit的屬性中需要修改placeholderText,它是單行文本在沒輸入文字之前就顯示的文字,如上圖的“請輸入用戶名&rdquo...
猜你喜歡
Qt第11課 - Qt 中的字符串類,QString, QLineEdit文本框接收按鍵字符
本文學習自 狄泰軟件 唐佐林老師的 QT課程。 Unicode:支持中文日文等等。。。 實驗1 :QString 初體驗 實驗2:為計算器實例添加消息響應–獲取按鍵輸入回顯到QLineEdit 文本框 實驗成功獲取輸入按鍵的字符并回顯到QLineEdit,但是對于一些特殊的字符 如 = 運算符,我們不能顯示到QLineEdit。 實驗3 為計算器實例添加消息響應–獲取按鍵輸...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...