我的编程空间,编程开发者的网络收藏夹
学习永远不晚

c++ qt自定义搜索编辑框的实现方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

c++ qt自定义搜索编辑框的实现方法

实现效果如下:

在这里插入图片描述

实现方法说明:
(1)自定义QLineEdit,在编辑框里添加布局,将按钮设置在右边
(2)给自定义QLineEdit添加信号,当点击按钮搜索按钮时发送信号到主界面做相应的操作

自定义LineEdit

csearchlineedit.h

#ifndef CSEARCHLINEEDIT_H
#define CSEARCHLINEEDIT_H

#include <QLineEdit>
#include <QPushButton>
#include <QWidget>
class CSearchLineEdit : public QLineEdit
{
    Q_OBJECT
public:
    CSearchLineEdit(QWidget* parent = nullptr);
signals:
    void sig_search(const QString& context);
private slots:
    void on_ClickedSearch();
private:
    QPushButton *m_pBtn = nullptr;
};
#endif // CSEARCHLINEEDIT_H

csearchlineedit.cpp

#include "csearchlineedit.h"
#include <QHBoxLayout>

CSearchLineEdit::CSearchLineEdit(QWidget* parent)
    :QLineEdit(parent)
{
    m_pBtn = new QPushButton(this);
    m_pBtn->setCursor(Qt::PointingHandCursor);
    m_pBtn->setFixedSize(22, 22);
    m_pBtn->setToolTip(QStringLiteral("搜索"));
    m_pBtn->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 = this->textMargins();
    //设置文本内容左上右下的间隙
    this->setTextMargins(0, 0, m_pBtn->width() + 1, 0);
    this->setPlaceholderText(QStringLiteral("请输入搜索内容"));
    // 给编辑框设置布局
    QHBoxLayout *pSearchLayout = new QHBoxLayout(this);
    pSearchLayout->addStretch();
    pSearchLayout->addWidget(m_pBtn);
    pSearchLayout->setSpacing(0);
    pSearchLayout->setContentsMargins(0, 0, 0, 0);
    this->setLayout(pSearchLayout);
    connect(m_pBtn, &QPushButton::clicked, this, &CSearchLineEdit::on_ClickedSearch);
}
void CSearchLineEdit::on_ClickedSearch()
    // 其它逻辑
    emit sig_search(this->text());

注意这里是在主界面接收搜索按钮的点击事件,槽函数的参数是搜索内容,const QString&,当然也可以在CSearchLineEdit里处理,不过一般习惯把控件代码和逻辑代码分开,尽量不在控件类里处理业务逻辑。

主界面代码

#include "widget.h"
#include <QLineEdit>
#include <QPushButton>
#include <QMessageBox>
#include <QHBoxLayout>
#include "csearchlineedit.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    resize(400, 300);
    setWindowTitle(QStringLiteral("自定义搜索框"));
    CSearchLineEdit *pLineEdit = new CSearchLineEdit(this);
    QVBoxLayout *pLayout = new QVBoxLayout();
    pLayout->addWidget(pLineEdit);
    pLayout->setContentsMargins(10, 10, 10, 10);
    setLayout(pLayout);
    connect(pLineEdit, &CSearchLineEdit::sig_search, this, &Widget::onSearch);
}
Widget::~Widget()
void Widget::onSearch(const QString& context)
    if (context.isEmpty())
    {
        QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("搜索内容为空"));
        return;
    }
    QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("搜索内容为%1").arg(context));

其它说明

除了可以在右边添加按钮,还可以在左边添加按钮,只要合理的设置LineEdit的文本与左右两边控件的间隙即可。比如下面的自定义编辑框:
优酷搜索框

在这里插入图片描述

钉钉搜索框

在这里插入图片描述

这些都是可以实现的,优酷则需要用qss把LineEdit的四周圆角设为高度的一半,右侧按钮的圆角也设为高度的一半,这样就实现了;钉钉的搜索框则是搜索按钮在左边;二者的搜索功能都会有弹出对话框的功能,例如钉钉

在这里插入图片描述

这个也可以做,LineEdit获得焦点时,弹出对话框即可。

到此这篇关于c++ qt自定义搜索编辑框的文章就介绍到这了,更多相关c++ 编辑框内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

c++ qt自定义搜索编辑框的实现方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用c++ qt自定义搜索编辑框

今天小编给大家分享一下怎么用c++ qt自定义搜索编辑框的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实现效果如下:实现方法
2023-06-29

C/C++ QT实现自定义对话框的方法是什么

这篇文章主要讲解了“C/C++ QT实现自定义对话框的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C/C++ QT实现自定义对话框的方法是什么”吧!对话框分为多种,常见的有通用对
2023-06-21

Flutter实现自定义筛选框的方法

本篇内容主要讲解“Flutter实现自定义筛选框的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter实现自定义筛选框的方法”吧!目录一、首先自定义筛选框的按钮视图,布局很简单,一个
2023-06-20

PHP实现搜索框自动补全功能的方法

搜索框自动补全是一种常见的网页功能,能够提升用户体验并简化搜索过程。在PHP中实现搜索框自动补全功能可以通过Ajax异步请求来实现。下面将介绍具体的实现方法,包括前端代码和后端代码示例。前端代码示例:
PHP实现搜索框自动补全功能的方法
2024-03-07

WordPress实现搜索结果包括自定义文章类型内容的方法

本文实例讲述了WordPress实现搜索结果包括自http://www.cppcns.com定义文章类型内容的方法。分享给大家供大家参考。具体分析如下: 我们知道如果你在WordPress站点添加了自定义文章类型,这样在搜索结果中是看不到自
2022-06-12

Android编程实现AlertDialog自定义弹出对话框的方法示例

本文实例讲述了Android编程实现AlertDialog自定义弹出对话框的方法。分享给大家供大家参考,具体如下:弹出对话框,显示自定义的布局文件弹出对话框提示设置密码或登录密码private void showSetPasswordDia
2023-05-30

C++中使用FFmpeg适配自定义编码器的实现方法

本文介绍了在C++中使用FFmpeg库进行自定义编码器适配的实现方法。文章通过具体的代码示例,介绍了FFmpeg的基本使用方法和自定义编码器的实现过程,帮助读者了解如何在C++中进行音视频编码和解码的开发工作,并能够实现自定义的编码器适配
2023-05-16

Android编程实现自定义手势的方法详解

本文实例讲述了Android编程实现自定义手势的方法。分享给大家供大家参考,具体如下: 之前介绍过如何在Android程序中使用手势,主要是系统默认提供的几个手势,这次介绍一下如何自定义手势,以及如何对其进行管理。 先介绍一下Android
2022-06-06

Android编程实现自定义进度条颜色的方法

本文实例讲述了Android编程实现自定义进度条颜色的方法。分享给大家供大家参考,具体如下: android 自定义进度条颜色 先看图基于产品经理各种自定义需求,经过查阅了解,下面是自己对android自定义进度条的学习过程! 这个没法了只
2022-06-06

Android编程实现自定义ImageView圆图功能的方法

本文实例讲述了Android编程实现自定义ImageView圆图功能的方法。分享给大家供大家参考,具体如下:首先很感谢开源项目Universal Image Loader图片加载框架。之前也看过一段时间框架源码,但是却没有时间进行知识点的总
2023-05-30

Android编程实现自定义系统菜单背景的方法

本文实例讲述了Android编程实现自定义系统菜单背景的方法。分享给大家供大家参考,具体如下: 不多说,上图,见代码。package lab.sodino.menutest; import android.content.Context;
2022-06-06

Android编程实现自定义分享列表ACTION_SEND功能的方法

本文实例讲述了Android编程实现自定义分享列表ACTION_SEND功能的方法。分享给大家供大家参考,具体如下: 看到最近都在做自定义的东西,因为比较灵活,还可以摆脱系统自身不怎么漂亮的UI,(大家都懂得)所以自己也做了下自定义的分享列
2022-06-06

Android编程使用自定义shape实现shadow阴影效果的方法

本文实例讲述了Android编程使用自定义shape实现shadow阴影效果的方法。分享给大家供大家参考,具体如下: 直接上xml文件, 并且附上相应的解析:
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录