/** * @file PaiSearchLineEdit.cpp * @brief 实现一个具有搜索功能的LineEdit * @date 2012-02-25 */ #include #include #include #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); }