Qt實(shí)現(xiàn)編輯框失去焦點(diǎn)隱藏功能
今天來(lái)為大家分享一個(gè)小功能,首先看實(shí)現(xiàn)的效果吧~
功能講解:
QLineEdit控件進(jìn)行文本編輯,點(diǎn)擊保存按鈕后,隱藏編輯框和保存按鈕,僅展示編輯內(nèi)容,當(dāng)鼠標(biāo)點(diǎn)擊空白處時(shí),同樣隱藏編輯框、隱藏保存按鈕,但不存儲(chǔ)編輯文本
如果你要需要實(shí)現(xiàn)這樣的功能,就繼續(xù)往下看吧~
1.控件
三個(gè)控件:QLineEdit編輯框、QPushButton按鈕、QLabel純文本展示。
默認(rèn)QLabel控件是隱藏狀態(tài),只有點(diǎn)擊保存按鈕以及失去焦點(diǎn)后才會(huì)展示。
2.響應(yīng)消息
此時(shí)需要響應(yīng)兩個(gè)消息。
消息1:點(diǎn)擊保存按鈕
connect(ui.btnSave, &QPushButton::clicked, this, &QMyWidget::OnBnClickedSave);
消息2:QLineEdit控件失去焦點(diǎn)后操作
對(duì)于控件來(lái)說(shuō),失去焦點(diǎn)的一般是focusOut消息,在QLineEdit這個(gè)類(lèi)中,該消息是受保護(hù)的,那么如果要獲取控件是如何失去焦點(diǎn)的,只能繼承QLineEdit類(lèi),將失去焦點(diǎn)的消息,發(fā)送給調(diào)用者。
.h聲明
class CustomLineEdit : public QLineEdit { Q_OBJECT public: CustomLineEdit(QWidget *parent); ~CustomLineEdit(); signals: void Msg_SendCustomLineEditFocusOut(); //失去焦點(diǎn)消息 protected: void focusOutEvent(QFocusEvent *event) override; };
.cpp實(shí)現(xiàn)
CustomLineEdit::CustomLineEdit(QWidget *parent) : QLineEdit(parent) { } CustomLineEdit::~CustomLineEdit() { } void CustomLineEdit::focusOutEvent(QFocusEvent *event) { emit Msg_SendCustomLineEditFocusOut(); QLineEdit::focusOutEvent(event); }
3.窗口功能實(shí)現(xiàn)
3.1雙擊響應(yīng)QLabel控件
在Qt控件中,QLabel是不會(huì)響應(yīng)鼠標(biāo)按下消息,之前文章中就有提到,如何讓QLabel控件響應(yīng)消息 Qt|控件點(diǎn)擊消息獲取方法,這篇文章中詳細(xì)講述了如何讓QLabel控件響應(yīng)鼠標(biāo)按下消息。
鼠標(biāo)雙擊QLabel控件功能:雙擊后隱藏QLabel控件,并將QLineEdit編輯框控件、QPushButton保存控件展示出來(lái)。
//雙擊標(biāo)題事件
if (event->type() == QEvent::MouseButtonDblClick) { //此刻,響應(yīng)雙擊消息后,隱藏該控件,顯示編輯框、和保存按鈕 m_labTitle->hide(); m_editTitle->show(); m_editTitle->clear(); m_btnSave->show(); }
3.2QLineEdit失去焦點(diǎn)
編輯框失去焦點(diǎn)后功能:顯示QLabel控件,隱藏QLineEdit控件并且不記錄編輯的內(nèi)容,并隱藏保存按鈕。
m_labTitle->show(); m_editTitle->hide(); m_btnSave->hide();
3.3QPushButton保存按鈕
點(diǎn)擊保存按鈕后功能:獲取QLineEdit編輯框內(nèi)的文本并隱藏、隱藏保存按鈕,顯示QLbable控件,靜態(tài)文本展示。
QString qTitle = m_editTitle->text(); m_labTitle->setText(qTitle); //標(biāo)題文本設(shè)置 m_labTitle->show(); m_editTitle->hide(); m_btnSave->hide();
實(shí)現(xiàn)了QLineEdit編輯框的失去焦點(diǎn)消息,那么該消息是什么時(shí)候觸發(fā)呢?
例如,點(diǎn)擊保存按鈕時(shí),先響應(yīng)保存按鈕,后響應(yīng)鼠標(biāo)失去焦點(diǎn)消息。
到此這篇關(guān)于Qt實(shí)現(xiàn)編輯框失去焦點(diǎn)隱藏功能的文章就介紹到這了,更多相關(guān)Qt編輯框失去焦點(diǎn)隱藏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C語(yǔ)言中條件判斷語(yǔ)句if和switch的用法
這篇文章主要介紹了詳解C語(yǔ)言中條件判斷語(yǔ)句if和switch的用法,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-04-04C語(yǔ)言中const和C++中的const 區(qū)別詳解
這篇文章主要介紹了C語(yǔ)言中const和C++中的const 區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04typedef_struct與struct之間的區(qū)別
本篇文章主要是對(duì)typedef struct與struct之間的區(qū)別進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12