QT笔记——自定义搜索框

common.h

enum LineEditCondition
{
	NoStatus,    
	ConditonStatus,
	OrderStatus,
};

CustonLineEdit.h

#pragma once

#include <QLineEdit>
#include <QPushButton>
#include <QLineEdit>
#include <QAction>
#include <QHBoxLayout>
#include "common.h"

class CustomLineEdit : public QWidget
{
	Q_OBJECT

public:
	CustomLineEdit(QWidget *parent = nullptr);
	~CustomLineEdit();

	QLineEdit* getLineEdit();      //获取当前LineEdit
	LineEditStatus  getCurCondition(); //获取当前状态
	QAction* getSearchAction();   //获取当前的搜索按钮

public slots:
	void slot_conditionBtnAction_triggereed();

private:
	QAction* conditionBtn;        //条件选择
	QMenu* m_conditionMenu;		 //条件菜单
	QAction* m_statusAction;     //状态查询
	QAction* m_orderAction;     //订单查询

	QLineEdit* search_edit1;     //搜索框
	QPushButton* m_searchBtn;    //搜索按钮
	QAction* search_action1;	 //搜索行为

	LineEditStatus m_curCondition;			//当前查询条件

};

CustonLineEdit.cpp

#include "CustomLineEdit.h"

CustomLineEdit::CustomLineEdit(QWidget *parent)
	: QWidget(parent),m_curCondition(LineEditStatus::NoStatus)
{

	conditionBtn = new QAction;
	conditionBtn->setIcon(QIcon(":/image/1.png"));

	m_conditionMenu = new QMenu(this);
	m_statusAction = new QAction(QStringLiteral("状态条件"));
	m_statusAction->setObjectName("statusAction");
	m_orderAction = new QAction(QStringLiteral("订单号"));
	m_orderAction->setObjectName("orderAction");

	m_conditionMenu->addAction(m_statusAction);
	m_conditionMenu->addAction(m_orderAction);
	conditionBtn->setMenu(m_conditionMenu);

	search_edit1 = new QLineEdit(this);
	search_action1 = new QAction;
	search_action1->setIcon(QIcon(":/image/1.png"));
	search_action1->setToolTip(QStringLiteral("搜索"));
	search_edit1->addAction(conditionBtn, QLineEdit::LeadingPosition);
	search_edit1->addAction(search_action1, QLineEdit::TrailingPosition);


	QHBoxLayout* hboxLayout = new QHBoxLayout();
	hboxLayout->addStretch();
	hboxLayout->addWidget(search_edit1);
	hboxLayout->setSpacing(0);
	hboxLayout->setContentsMargins(0, 0, 0, 0);
	this->setLayout(hboxLayout);
	
	connect(m_statusAction, &QAction::triggered, this, &CustomLineEdit::slot_conditionBtnAction_triggereed);
	connect(m_orderAction, &QAction::triggered, this, &CustomLineEdit::slot_conditionBtnAction_triggereed);


}

CustomLineEdit::~CustomLineEdit()
{
}

QLineEdit* CustomLineEdit::getLineEdit()
{
	return search_edit1;
}

LineEditStatus CustomLineEdit::getCurCondition()
{
	return m_curCondition;
}

QAction* CustomLineEdit::getSearchAction()
{
	return search_action1;
}

void CustomLineEdit::slot_conditionBtnAction_triggereed()
{
	QAction* action = qobject_cast<QAction*>(sender());
	QString actionStr = action->objectName();

	if (actionStr == "statusAction")
	{
		m_curCondition = LineEditStatus::ConditonStatus;
	}
	else if (actionStr == "orderAction")
	{
		m_curCondition = LineEditStatus::OrderStatus;
	}
}

图片:
左边是条件,中间是搜索内容,最右边的是点击搜索查询

效果图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值