一、前言

  用户需要输入文本时,可使用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 搜索框的更多相关文章

  1. Qt之自定义搜索框

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...

  2. 【Qt】Qt之自定义搜索框【转】

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 简述 效果 细节分析 Coding 源码下载 效果 ...

  3. [Qt] searchBox 搜索框实现

    [Qt] searchBox 搜索框实现 也就是在lineEdit中加入button.在搜索框的右边会有个小小的搜索图标,输入内容之后,搜索的图标会变成叉叉. 类中的IconHelper见我的另一篇博 ...

  4. qt自己定义搜索框(超简单,带效果图)

    1. 什么也不要说.先上效果图: 2. 代码 头文件: #ifndef APPSEARCHLINE_H #define APPSEARCHLINE_H #include <QLineEdit&g ...

  5. Qt之自定义搜索框——QLineEdit里增加一个Layout,还不影响正常输入文字(好像是一种比较通吃的方法)

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...

  6. Qt QLineEdit 漂亮的搜索框 && 密码模式 && 格式化输入 && 提示文字 && 选择内容并移动 && 清除全部输入

    先上一个漂亮的搜索框效果图, 输入搜索文本效果, 点击搜索图标效果: //实现代码 void MainWindow::iniLineEdit() { ui->lineEdit->setPl ...

  7. 三、jQuery--jQuery实践--搜索框制作

    input标签讲解 <input/>作为按钮的type属性:button.submit(后面会有二者对比分析)

  8. ios开发之--搜索框的使用(PYSearchViewController的使用)

    最近需要开发搜索框,比较了以前的各个版本的搜索框,UISearchDisplayController和UISearchController的使用,以后再做记录,随着ios11的更新,一些控件发生了,改 ...

  9. (八)solr7实现搜索框的自动提示并统计词频

     solr7实现搜索框的自动提示并统计词频 1:用solr 的suggest组件,统计词频相对麻烦. 2:用TermsComponent,自带词频统计功能. Terms组件提供访问索引项的字段和每个词 ...

随机推荐

  1. Semaphore自白:限流器用我就对了!

    大家好,我是 Semaphore,我的中文名字叫"信号量",我来自 JUC(java.util.concurrent)家族. 我们家族有很多优秀的成员,比如:CountDownLa ...

  2. Java面向对象OOP思想概述

    目录 OOP思想(Object Oriented Programming) 类和对象 接口 抽象类 OOP三大特性 封装 继承 多态 OOP复用的形式 OOP思想(Object Oriented Pr ...

  3. 2.1.3- 体会css样式

    css初始 css样式规则 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  4. Linux 究级基础入门命令整理

    Linux 究级基础入门命令整理 条条框框,三三两两,怎讷个这么多,哈哈!no zuo no die. 纯粹个人菜鸟笔记,望大神笑纳! 后续,未完!! 查看系统信息 uname -a - 查看内核/操 ...

  5. linux下export命令添加删除环境变量

    Linux export命令参数   功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量. ...

  6. 【Nginx(五)】Nginx配置Https证书

    大致的流程如下 1.申请Https证书,绑定域名信息; 由于自己的服务器是腾讯云服务器, 这里就在腾讯云上申请SSL证书, 申请地址: https://console.cloud.tencent.co ...

  7. 【JVM】JVM中的垃圾回收算法

    1.标记 -清除算法 "标记-清除"(Mark-Sweep)算法,如它的名字一样,算法分为"标记"和"清除"两个阶段:首先标记出所有需要回收 ...

  8. 【网络协议】OSI七层模型 和TCP/IP五层模型

    OSI(Open System Interconnection)七层模型 TCP/IP 五层模型

  9. 【Vue】Vue学习(一)-Vue指令

    1.v-text v-text主要用来更新文本,等同于JS的text属性 <span v-text="msg"></span> 这两者等价 <span ...

  10. hdu4998 旋转坐标系

    题意:       一开始的时候有一个坐标系(正常的),然后有n个操作,每个操作是 x y d,意思是当前坐标系围绕x,y点逆时针旋转d度,最后让你输出三个数x y d,把这n个操作的最后结果,用一步 ...