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

 更新时间:2022年03月21日 14:34:18   作者:令狐掌门  
这篇文章主要介绍了c++ qt自定义搜索编辑框,通过自定义QLineEdit,在编辑框里添加布局,将按钮设置在右边,当点击按钮搜索按钮时发送信号到主界面做相应的操作,需要的朋友可以参考下

实现效果如下:

在这里插入图片描述

实现方法说明:
(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++ 编辑框内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c语言 深入理解函数的递归

    c语言 深入理解函数的递归

    这一章讲解的是函数的递归,因为递归函数是一个非常重要求解复杂问题的方法之一,在学习算法的过程之中我们也会遇到他,所以我想对它进行一次讲解,希望能帮助其他人,也能帮助我自己来梳理一遍。下面我会通过一些题目的讲解去认识递归函数
    2022-02-02
  • 七夕表白! C语言实现爱情红玫瑰

    七夕表白! C语言实现爱情红玫瑰

    这篇文章主要为大家详细介绍了C语言实现爱情红玫瑰,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • C迷途指针详解

    C迷途指针详解

    这篇文章主要介绍了C迷途指针,迷途指针又称为悬空指针、野指针,其对C程序的安全性与稳定性影响巨大,本文对其原理与检测方法做了较为详尽的分析,需要的朋友可以参考下
    2014-09-09
  • C语言手把手教你实现贪吃蛇AI(上)

    C语言手把手教你实现贪吃蛇AI(上)

    这篇文章主要介绍了C语言手把手教你实现贪吃蛇AI,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 解析C++编程中的选择结构和switch语句的用法

    解析C++编程中的选择结构和switch语句的用法

    这篇文章主要介绍了解析C++编程中的选择结构和switch语句的用法,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • 详解C++ 重载运算符和重载函数

    详解C++ 重载运算符和重载函数

    这篇文章主要介绍了C++ 重载运算符和重载函数的的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 一起来学习C语言的输入和输出

    一起来学习C语言的输入和输出

    这篇文章主要为大家详细介绍了C语言的输入和输出,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 约瑟夫经典问题扩展成双向约瑟夫问题

    约瑟夫经典问题扩展成双向约瑟夫问题

    今天小编就为大家分享一篇关于约瑟夫经典问题扩展成双向约瑟夫问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Visual Studio中的解决方案中不显示项目分析

    Visual Studio中的解决方案中不显示项目分析

    这篇文章主要为大家介绍了Visual Studio中的解决方案中不显示项目问题分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • C++ 左值引用与一级指针示例详解

    C++ 左值引用与一级指针示例详解

    这篇文章主要介绍了C++ 左值引用与一级指针,本文给大家介绍了C++ (左值)引用和指针简介,结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09

最新评论