78 lines
1.9 KiB
C++
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);
|
|
}
|