Qt 搜索框
一、前言
用户需要输入文本时,可使用QLineEdit控件进行编辑输入,缺点是样式相对单一。
在使用百度搜索输入框时,发觉比较人性化,故采用QLineEdt+QPushButton通过css样式实现自定义搜索框控件,包含如下功能:
1、可设置占位符文本
2、可设置搜索按钮显示字符内容、文本颜色
3、可设置搜索按钮为图标形式或文本形式
4、可设置背景色、边框颜色、边框圆角角度
5、支持回车发送当前文本信号
6、支持获取当前编辑文本内容
7、支持设置当前文本内容
8、鼠标移入/移出到搜索按钮上,切换鼠标状态
二、搜索框实现
1、运行环境Qt5.5 VS2013
2、自定义搜索框
1)继承QWidget,定义搜索框类SearchLineEdit
2)采用水平无间距布局

1 //用于输入搜索文本,左对齐
2 m_LineEdit = new QLineEdit;
3 m_LineEdit->setObjectName("SearchText");
4 m_LineEdit->setPlaceholderText(" 请输入搜索字符");
5 m_LineEdit->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
6 m_LineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
7 connect(m_LineEdit, SIGNAL(editingFinished()), this, SLOT(searchSlot()));
8
9 m_Button = new QPushButton;
10 m_Button->setObjectName("SearchButton");
11 m_Button->setText(buttonText);
12 m_Button->setIconSize(QSize(28, 28));
13 m_Button->setFixedWidth(55);
14 m_Button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
15 connect(m_Button, SIGNAL(clicked(bool)), this, SLOT(searchSlot()));
16 m_Button->installEventFilter(this);
17
18 m_BgFrame = new QFrame;
19 m_BgFrame->setObjectName("frameSearch");
20
21 //设置样式
22 setStyle();
23
24 QVBoxLayout *verticalLayout = new QVBoxLayout(this);
25 verticalLayout->setMargin(0);
26 verticalLayout->setSpacing(0);
27 verticalLayout->addWidget(m_BgFrame);
28
29 //将控件按照横向布局排列
30 QHBoxLayout *layout = new QHBoxLayout(m_BgFrame);
31 layout->setMargin(0);
32 layout->setSpacing(0);
33 layout->addWidget(m_LineEdit);
34 layout->addWidget(m_Button);
控件布局
3)设置QLineEdit与QPushButton的显示样式

void SearchLineEdit::setStyle()
{
QStringList qss; qss.append(QString("QFrame#%1{border:none;border-radius:%2px;}")
.arg(m_BgFrame->objectName()).arg(borderRadius));
qss.append(QString("QLineEdit{background-color:%1;border:none;}").arg(bgColor));
qss.append(QString("QLineEdit{border-top-left-radius:%1px;border-bottom-left-radius:%1px;border:2px solid %2;}")
.arg(borderRadius).arg(borderColor));
qss.append(QString("QPushButton{background-color:%1;border:none;color:%2;}")
.arg(borderColor).arg(buttonTextColor));
qss.append(QString("QPushButton{border-top-right-radius:%1px;border-bottom-right-radius:%1px;}")
.arg(borderRadius)); m_BgFrame->setStyleSheet(qss.join(""));
}
样式设置
3、控件效果如下

Qt 搜索框的更多相关文章
- Qt之自定义搜索框
简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...
- 【Qt】Qt之自定义搜索框【转】
简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 简述 效果 细节分析 Coding 源码下载 效果 ...
- [Qt] searchBox 搜索框实现
[Qt] searchBox 搜索框实现 也就是在lineEdit中加入button.在搜索框的右边会有个小小的搜索图标,输入内容之后,搜索的图标会变成叉叉. 类中的IconHelper见我的另一篇博 ...
- qt自己定义搜索框(超简单,带效果图)
1. 什么也不要说.先上效果图: 2. 代码 头文件: #ifndef APPSEARCHLINE_H #define APPSEARCHLINE_H #include <QLineEdit&g ...
- Qt之自定义搜索框——QLineEdit里增加一个Layout,还不影响正常输入文字(好像是一种比较通吃的方法)
简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...
- Qt QLineEdit 漂亮的搜索框 && 密码模式 && 格式化输入 && 提示文字 && 选择内容并移动 && 清除全部输入
先上一个漂亮的搜索框效果图, 输入搜索文本效果, 点击搜索图标效果: //实现代码 void MainWindow::iniLineEdit() { ui->lineEdit->setPl ...
- 三、jQuery--jQuery实践--搜索框制作
input标签讲解 <input/>作为按钮的type属性:button.submit(后面会有二者对比分析)
- ios开发之--搜索框的使用(PYSearchViewController的使用)
最近需要开发搜索框,比较了以前的各个版本的搜索框,UISearchDisplayController和UISearchController的使用,以后再做记录,随着ios11的更新,一些控件发生了,改 ...
- (八)solr7实现搜索框的自动提示并统计词频
solr7实现搜索框的自动提示并统计词频 1:用solr 的suggest组件,统计词频相对麻烦. 2:用TermsComponent,自带词频统计功能. Terms组件提供访问索引项的字段和每个词 ...
随机推荐
- 《TCP/IP网络编程》学习笔记整理
简介 本笔记目前已包含 <TCP/IP网络编程>中的前 5 章,后续章节会在近期内补充完整. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔 ...
- Mysql 事务特性和隔离级别
事务的特性 原子性(Atomicity) 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节.事务在执行过程中发生错误,会被回滚(Rollback)到 ...
- 【Nginx(五)】Nginx配置Https证书
大致的流程如下 1.申请Https证书,绑定域名信息; 由于自己的服务器是腾讯云服务器, 这里就在腾讯云上申请SSL证书, 申请地址: https://console.cloud.tencent.co ...
- UVA10780幂和阶乘
题意: 输入两个整数n,m(1<m<5000,0<n<10000)求最小的k使得m^k是n!的因子. 思路: 比较容易想,一开始手残wa了好几次,我们直接 ...
- Win64 驱动内核编程-25.X64枚举和隐藏内核模块
X64枚举和隐藏内核模块 在 WIN64 上枚举内核模块的人方法:使用 ZwQuerySystemInformation 的第 11 号功能和枚举 KLDR_DATA_TABLE_ENTRY 中的 I ...
- 深入浅出带你玩转sqlilabs(三)--GET,POST,COOKIE,万能密码注入
常见提交方式下的注入漏洞 WEB应用在数据传递接受中,针对SQL注入安全漏洞,由于数据大小,格式等原因,脚本在接受传递时会有多种传递方式,传递方式的不同将影响到安全测试的不同 第一点:数据常见提交方式 ...
- SpringJUnit4ClassRunner requires JUnit 4.12 or higher
报错:需要Junit 4.12 或者更高的版本 原因:查看pom.xml文件引入的Junit版本为4.11 解决办法:修改Junit版本为4.12即可
- spring.framework 版本从4.1.6.RELEASE升到5.0.20.RELEASE
将org.springframework 使用到的jar 版本号改为5.0.20.RELEASE后运行会报错: Servlet.service() for servlet [springmvc] in ...
- 10-10-12分页机制(xp)
虚拟地址到物理地址 虚拟地址空间就是32位系统的那4GB,这4GB空间的地址称为虚拟地址.虚拟地址经过分段机制后转化为线性地址,一般虚拟地址都等于线性地址,因为大多数段寄存器的基地址都为0,只有FS段 ...
- 【Web前端HTML5&CSS3】05-样式继承与其他概念
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 样式继承与其他概念 1. 继承 2. 选择器的权重 3. 长度单位 像素 屏幕分辨率 图像分辨率 百分比 em ...