这篇文章主要为大家详细介绍了Qt实现的一个简单的编辑框操作——主窗口失去焦点隐藏功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
今天来为大家分享一个小功能,首先看实现的效果吧~
功能讲解:
QLineEdit控件进行文本编辑,点击保存按钮后,隐藏编辑框和保存按钮,仅展示编辑内容,当鼠标点击空白处时,同样隐藏编辑框、隐藏保存按钮,但不存储编辑文本
如果你要需要实现这样的功能,就继续往下看吧~
1.控件
三个控件:QLineEdit编辑框、QPushButton按钮、QLabel纯文本展示。
默认QLabel控件是隐藏状态,只有点击保存按钮以及失去焦点后才会展示。
2.响应消息
此时需要响应两个消息。
消息1:点击保存按钮
connect(ui.btnSave, &QPushButton::clicked, this, &QMyWidget::OnBnClickedSave);
消息2:QLineEdit控件失去焦点后操作
对于控件来说,失去焦点的一般是focusOut消息,在QLineEdit这个类中,该消息是受保护的,那么如果要获取控件是如何失去焦点的,只能继承QLineEdit类,将失去焦点的消息,发送给调用者。
.h声明
class CustomLineEdit : public QLineEdit
{
Q_OBJECT
public:
CustomLineEdit(QWidget *parent);
~CustomLineEdit();
signals:
void Msg_SendCustomLineEditFocusOut(); //失去焦点消息
protected:
void focusOutEvent(QFocusEvent *event) override;
};
.cpp实现
CustomLineEdit::CustomLineEdit(QWidget *parent)
: QLineEdit(parent)
{
}
CustomLineEdit::~CustomLineEdit()
{
}
void CustomLineEdit::focusOutEvent(QFocusEvent *event)
{
emit Msg_SendCustomLineEditFocusOut();
QLineEdit::focusOutEvent(event);
}
3.窗口功能实现
3.1双击响应QLabel控件
在Qt控件中,QLabel是不会响应鼠标按下消息,之前文章中就有提到,如何让QLabel控件响应消息 Qt|控件点击消息获取方法,这篇文章中详细讲述了如何让QLabel控件响应鼠标按下消息。
鼠标双击QLabel控件功能:双击后隐藏QLabel控件,并将QLineEdit编辑框控件、QPushButton保存控件展示出来。
//双击标题事件
if (event->type() == QEvent::MouseButtonDblClick)
{
//此刻,响应双击消息后,隐藏该控件,显示编辑框、和保存按钮
m_labTitle->hide();
m_editTitle->show();
m_editTitle->clear();
m_btnSave->show();
}
3.2QLineEdit失去焦点
编辑框失去焦点后功能:显示QLabel控件,隐藏QLineEdit控件并且不记录编辑的内容,并隐藏保存按钮。
m_labTitle->show();
m_editTitle->hide();
m_btnSave->hide();
3.3QPushButton保存按钮
点击保存按钮后功能:获取QLineEdit编辑框内的文本并隐藏、隐藏保存按钮,显示QLbable控件,静态文本展示。
QString qTitle = m_editTitle->text();
m_labTitle->setText(qTitle); //标题文本设置
m_labTitle->show();
m_editTitle->hide();
m_btnSave->hide();
实现了QLineEdit编辑框的失去焦点消息,那么该消息是什么时候触发呢?
例如,点击保存按钮时,先响应保存按钮,后响应鼠标失去焦点消息。
到此这篇关于Qt实现编辑框失去焦点隐藏功能的文章就介绍到这了,更多相关Qt编辑框失去焦点隐藏内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Qt实现编辑框失去焦点隐藏功能


基础教程推荐
- C语言 structural body结构体详解用法 2022-12-06
- C++详细实现完整图书管理功能 2023-04-04
- C利用语言实现数据结构之队列 2022-11-22
- C++中的atoi 函数简介 2023-01-05
- 如何C++使用模板特化功能 2023-03-05
- C/C++编程中const的使用详解 2023-03-26
- C语言基础全局变量与局部变量教程详解 2022-12-31
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- 一文带你了解C++中的字符替换方法 2023-07-20
- 详解c# Emit技术 2023-03-25