Qt中的QlineEdit
概述:
QLineEdit 類代表編程框,它可以讓用戶輸入一個單行文本。類似于登錄窗口中的賬號和密碼的輸入框(行編輯)
1,構造函數:
QLineEdit (QWidget *parent = 0);
QLineEdit(const QString &contents, QWidget *parent = 0);
其中 contents 表示編輯框中顯示的內容。
2,屬性
(1)alignment 屬性表示顯示文本的對齊方式,相關成員函數如下:
int maxLength() const; // 獲取最大輸入長度
void setMaxLength(Qt::Alignment flag) const; // 設置對齊方式
void setMaxLength(int len); // 設置最大輸入長度
它的含義與 QLabel 類的 alignment 屬性相同。
maxLength 屬性表示編輯框可以容許的最大輸入長度,
(2)readOnly
屬性表示編輯框的內容是否為只讀的,即內容是否可以被用戶修改,相關成員函數如下:
bool isReadOnly() const; // 判斷是否為只讀的
void setReadOnly(bool on); // 設置是否為只讀的
(3)text 屬性表示編輯框的內容,相關的成員函數如下:
QString text() const; // 獲取編輯框的內容
void setText(const QString &text); // 設置編輯框的內容,這是一個槽
其中 setText 函數同時也是一個槽。要注意編輯框的內容不一定就是編輯框顯示的內容,比如一個密碼輸入編輯框,用戶輸入的密碼是不顯示出來的。如果要顯示編輯框的內容,則需使用下面的成員函數:
QString displayText() const; // 得到顯示的內容
(4)frame 屬性控制編輯框有沒有邊框,相關成員函數如下:
bool hasFrame() const; // 判斷有沒有邊框
void setFrame(bool on); // 設置有沒有邊框
(5)邊距
void setTextMargins(int left, int top, int right,int bottom); // 設置邊距
void getTextMargins(int *left, int *top, int *right, int *botton); // 獲取邊距
這兩個函數分別用于設置和獲取文本顯示的邊距,上、下、左、右 4 個邊距可以獨立進行設置。
(6)取消選中任何已選中的文本
void deselect()
3,信號
(1)當編輯框的內容發生變化時,將發射以下信號:
void textChanged(const QString &text);
其中參數 text 是發生變化后的內容。
(2)當編輯框的內容被編輯時,將發射以下信號:
void textEdited(const QString &text);
其中參數 text 是編輯后的內容。它與 textChanged 信號的主要區別在于,它只是在用戶進行修改的時候發射,在程序中用 setText 修改時則不發射,而后者則在兩種情況下都會發射。
(3)void selectionChanged()
只要選擇改變這個信號就會被發射。
(4)void cursorPositionChanged(int old, int new)
只要光標移動,這個信號就會發射。前面的位置old,新的位置是new。
(5)void editingFinished()
(3)當在編輯框中按下回車鍵時,將發射以下信號:
void returnPressed();
這個信號將在按下回車鍵或者編輯框失去焦點時發射。
4,自帶槽函數
調用下面的槽可以清空編輯框中的內容:
void clear();
5,設置顯示模式
QlineEdit除了上所述的屬性外,還有其他屬性比如顯示模式
使用 QLineEdit 類的 setEchoMode () 函數設置文本的顯示模式,函數聲明:
void setEchoMode(EchoMode mode)
EchoMode 是一個枚舉類型,一共定義了四種顯示模式:
1>QLineEdit::Normal
模式顯示方式,按照輸入的內容顯示。
2>QLineEdit::NoEcho
不顯示任何內容,此模式下無法看到用戶的輸入。
3>QLineEdit::Password
密碼模式,輸入的字符會根據平臺轉換為特殊字符。
4>QLineEdit::PasswordEchoOnEdit
編輯時顯示字符否則顯示字符作為密碼。
代碼簡單舉例應用:
一個簡單的登錄窗口(支持回車),和一個簡單搜索引擎
/*簡單的登錄窗口*/
edit2 = new QLineEdit(this);
edit2->setMaxLength(12);//設置行編輯最大長度
edit2->setText("");
edit2->setFrame(true);//設置邊框
edit2->setStyleSheet("color:red");//設置樣式表, 文本顏色為紅色
edit2->setPlaceholderText("請輸入賬號");
edit2->setEchoMode(QLineEdit::Password);
edit2->move(10,100);
edit1 = new QLineEdit("行編輯內容",this);
edit1->setMaxLength(12);//設置行編輯最大長度
edit1->setText("");
edit1->setFrame(true);//設置邊框
edit1->setStyleSheet("color:red");//設置樣式表, 文本顏色為紅色
edit1->setPlaceholderText("請輸入密碼");
edit1->setEchoMode(QLineEdit::Password);
edit1->move(10,150);
/*捕捉回車信號*/
connect(edit1,&QLineEdit::returnPressed,this,[=](){
//此處可以判斷密碼和賬戶是否正確進行下一步操作
});
edit3 = new QLineEdit(this);
edit3->setPlaceholderText("請輸入搜索內容");//設置提示內容
action = new QAction(edit3);//定義動作指定父對象
action->setIcon(QIcon(":/new/prefix1/sunny.png"));//給動作添加圖標
edit3->addAction(action, QLineEdit::TrailingPosition);//添加動作到行編輯,并且放在行編輯的尾部,也可以添加行首
/*定義動作槽函數*/
connect(action,&QAction::triggered,this,[=]()//連接動作信號,點擊后打印
{
QString ret = edit3->text();
qDebug() << QString("輸入內容為:%1").arg(ret);
});
執行結果為
注意:添加動作的時候一定要在new
出對象之后,注意添加所需頭文件
智能推薦
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壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
猜你喜歡
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...
19.vue中封裝echarts組件
19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...