Qt 之自定义搜索框

Qt 之自定义搜索框简述关于搜索框,大家都经常接触。例如:浏览器搜索、Windows资源管理器搜索等。当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定。方案一:调用QLineEdit现有接口voidaddAction(QAction*action,ActionPositionposition)在QLineEdit的前/后添加部件,ActionPosition表示部件所在方位。QAction

大家好,又见面了,我是你们的朋友全栈君。

简述

关于搜索框,大家都经常接触。例如:浏览器搜索、Windows资源管理器搜索等。

这里写图片描述

这里写图片描述

当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定。

  • 方案一:调用QLineEdit现有接口

    • void addAction(QAction * action, ActionPosition position)
      在QLineEdit的前/后添加部件,ActionPosition表示部件所在方位。

    • QAction * addAction(const QIcon & icon, ActionPosition position)
      重载函数。

枚举:QLineEdit::ActionPosition

常量 描述
QLineEdit::LeadingPosition 0 当使用布局方向Qt::LeftToRight时,部件显示在文本左侧,使用Qt::RightToLeft则显示在右侧。
QLineEdit::TrailingPosition 1 当使用布局方向Qt::LeftToRight时,部件显示在文本右侧,使用Qt::RightToLeft则显示在左侧。
  • 方案二:自定义(可以实现任何组合)

下面,我们来针对自定义进行讲解。

| 版权声明:一去、二三里,未经博主允许不得转载。

效果

这里写图片描述

细节分析

实现细节需要如下步骤:

  1. 组合实现,输入框+按钮
  2. 事件关联
  3. 获取输入文本,进行文本搜索

为了更人性、易用,这里有一些细节需要注意:

  1. 输入框的文本不能处于按钮之下
  2. 输入框无文本时必须给与友好性提示
  3. 按钮无文本描述,一般需要给予ToolTip提示
  4. 按钮样式-正常、滑过、按下,以及鼠标滑过鼠标样式手型,

这些都想清楚了,我们就能快速实现一个搜索框了。

Coding

搜索框实现

m_pSearchLineEdit = new QLineEdit();
QPushButton *pSearchButton = new QPushButton(this);

pSearchButton->setCursor(Qt::PointingHandCursor);
pSearchButton->setFixedSize(22, 22);
pSearchButton->setToolTip(QStringLiteral("搜索"));
pSearchButton->setStyleSheet("QPushButton{border-image:url(:/images/icon_search_normal); background:transparent;} \ QPushButton:hover{border-image:url(:/images/icon_search_hover)} \ QPushButton:pressed{border-image:url(:/images/icon_search_press)}");

//防止文本框输入内容位于按钮之下
QMargins margins = m_pSearchLineEdit->textMargins();
m_pSearchLineEdit->setTextMargins(margins.left(), margins.top(), pSearchButton->width(), margins.bottom());
m_pSearchLineEdit->setPlaceholderText(QStringLiteral("请输入搜索内容"));

QHBoxLayout *pSearchLayout = new QHBoxLayout();
pSearchLayout->addStretch();
pSearchLayout->addWidget(pSearchButton);
pSearchLayout->setSpacing(0);
pSearchLayout->setContentsMargins(0, 0, 0, 0);
m_pSearchLineEdit->setLayout(pSearchLayout);

connect(pSearchButton, SIGNAL(clicked(bool)), this, SLOT(search()));

槽函数实现

void Widget::search()
{
    QString strText = m_pSearchLineEdit->text();
    if (!strText.isEmpty())
    {
        QMessageBox::information(this, QStringLiteral("搜索"), QStringLiteral("搜索内容为%1").arg(strText));
    }
}

源码下载

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158580.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nodejs

    nodejs

    2021年8月25日
    54
  • es6删除数组指定元素_如何删除数组中的元素

    es6删除数组指定元素_如何删除数组中的元素arr.splice(arr.findIndex(item=>item.id===id),1)//item只是参数可以写成i或者v都可以,//后面的额id是数组的id,是不能随便写的,如果你数组里面写的是id,这里就写id,如果数组里面写的是num,那这里就写num,//===后面的id是你想要删除的元素的id号,同理,如果你数组里面写的是num,那这里…

    2022年8月11日
    5
  • 库存系统难破题?且看京东到家如何破「建议收藏」

    库存系统难破题?且看京东到家如何破「建议收藏」京东到家库存系统架构设计目前,京东到家库存系统经历两年多的线上考验与技术迭代,现服务着万级商家十万级店铺的规模,需求的变更与技术演进,我们是如何做到系统的稳定性与高可用呢,下图会给你揭晓答案(通过强大的基础服务平台让应用、JVM、Docker、物理机所有健康指标一目了然,7*24小时智能监控告警让开发无须一直盯着监控,另外数据与业务相辅相成,用数据验证业务需求,迭代业务需求,让业务需求都尽可能

    2022年5月16日
    62
  • 算法高级(21)-如何通过IP地址进行定位?[通俗易懂]

    最近项目有一个用户地域分析的需求,现在知道ip字段,需要通过用户的ip查找归属地,我们这里将ip直接转换成对应城市的字符串。一、通过IP库二分查找ip库是从淘宝买的,csdn下载地址:【ip字段国内外均有】ip.txt是ip地址和归属地的规则数据,里面的数据是根据ip地址的十进制从高到低排序。 第一个字段是网段的起始IP地址,第二个字段是网段的结束IP地址, 第三个字段是网段的…

    2022年4月17日
    80
  • android一键 iphone,安卓手机一键变“iPhone”,这种App太过分了

    android一键 iphone,安卓手机一键变“iPhone”,这种App太过分了原标题:安卓手机一键变“iPhone”,这种App太过分了最近有小伙伴问小雷,如何才能在安卓手机上使用iOS的桌面。让整个手机看起来更加清爽整洁。想让苹果手机变得“卓里卓气”可能有点麻烦,但是如果是安卓手机想变成iOS风格,那是分分钟就能搞定的事情。今天小雷就给大家推荐一款能够随意更换主题UI的实用软件——【XLauncherPro】。这是一款模仿iPhone手机界面的应用,有了它可以让手机界…

    2022年5月9日
    61
  • hogwarts sorting hat_huge squares

    hogwarts sorting hat_huge squares1.概述murmurhash是AustinAppleby于2008年创立的一种非加密hash算法,适用于基于hash进行查找的场景。murmurhash最新版本是MurMurHash3,支持32位、64位及128位值的产生。murmurhash标准使用c++实现,但是…

    2022年8月31日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号