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è)類中,該消息是受保護(hù)的,那么如果要獲取控件是如何失去焦點(diǎn)的,只能繼承QLineEdit類,將失去焦點(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++之實(shí)現(xiàn)快速清空vector以及釋放vector內(nèi)存
這篇文章主要介紹了C++之實(shí)現(xiàn)快速清空vector以及釋放vector內(nèi)存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
C語(yǔ)言sizeof和strlen區(qū)別小結(jié)
C語(yǔ)言中的sizeof和strlen是兩個(gè)常用的操作符/函數(shù),但它們的功能和用途有很大的區(qū)別,本文就詳細(xì)的來(lái)介紹一下C語(yǔ)言sizeof和strlen區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
C++實(shí)現(xiàn)LeetCode(187.求重復(fù)的DNA序列)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(187.求重復(fù)的DNA序列),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C語(yǔ)言字符函數(shù)中的isalnum()和iscntrl()你都知道嗎
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言字符函數(shù)中的isalnum()和iscntrl(),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
C語(yǔ)言socket編程開(kāi)發(fā)應(yīng)用示例
這篇文章主要介紹了C語(yǔ)言socket編程開(kāi)發(fā)應(yīng)用,示例簡(jiǎn)單,大家參考使用吧2013-12-12
C語(yǔ)言圍圈報(bào)數(shù)題目代碼實(shí)現(xiàn)
大家好,本篇文章主要講的是C語(yǔ)言圍圈報(bào)數(shù)題目代碼實(shí)現(xiàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01

