文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 14:52

关注

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

实现效果如下:

怎么用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_OBJECTpublic:    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的文本与左右两边控件的间隙即可。比如下面的自定义编辑框:
优酷搜索框

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

钉钉搜索框

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

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

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

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

以上就是“怎么用c++ qt自定义搜索编辑框”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯