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;
}
}
图片:
左边是条件,中间是搜索内容,最右边的是点击搜索查询
效果图: