logplus/Workflow/WFWidget/src/PaiSearchLineEdit.cpp
2026-01-16 17:18:41 +08:00

78 lines
1.9 KiB
C++

/**
* @file PaiSearchLineEdit.cpp
* @brief 实现一个具有搜索功能的LineEdit
* @date 2012-02-25
*/
#include <QVariant>
#include <QPushButton>
#include <QIcon>
#include "PaiSearchLineEdit.h"
// 搜索框按钮属性名称
const char *RIGHT_BUTTON_PROPERTY = "rightButton";
using namespace pai::gui;
PaiSearchLineEdit::PaiSearchLineEdit(QWidget *pParent)
: PaiLineEdit(pParent)
{
SetRightIcon(":/Search.png");
m_pRightPBtn->setProperty(RIGHT_BUTTON_PROPERTY, QVariant("Search"));
setPlaceholderText(tr("Keyword Search"));
updateGeometry();
// 触发信号
connect(m_pRightPBtn, SIGNAL(clicked()), this, SLOT(CleanSearchBox()));
connect(this, SIGNAL(EditingStoped(const QString&)), this, SLOT(SetCurrentIcon()));
}
PaiSearchLineEdit::~PaiSearchLineEdit()
{
}
void PaiSearchLineEdit::SetCurrentIcon()
{
PaiSearchLineEdit *pEdit = qobject_cast< PaiSearchLineEdit* > (sender());
if(pEdit)
{
if(!pEdit->text().isEmpty())
{
pEdit->UpdateRightIcon(QIcon(":/clear.png"));
m_pRightPBtn->setProperty(RIGHT_BUTTON_PROPERTY, QVariant("Clear"));
//m_pRightPBtn->setEnabled(true);
}
else
{
pEdit->UpdateRightIcon(QIcon(":/Search.png"));
m_pRightPBtn->setProperty(RIGHT_BUTTON_PROPERTY, QVariant("Search"));
//m_pRightPBtn->setEnabled(false);
}
}
}
void PaiSearchLineEdit::CleanSearchBox()
{
if(m_pRightPBtn && (m_pRightPBtn->property(RIGHT_BUTTON_PROPERTY).toString()) == QString("Clear"))
{
clear();
UpdateRightIcon(QIcon(":/Search.png"));
//m_pRightPBtn->setEnabled(false);
}
}
void PaiSearchLineEdit::UpdateRightIcon(const QIcon & icon)
{
if (m_pRightPBtn)
{
m_pRightPBtn->setIcon(icon);
}
}
void PaiSearchLineEdit::enterEvent(QEvent *pEvent)
{
QWidget::enterEvent(pEvent);
m_pRightPBtn->setCursor(Qt::ArrowCursor);
}