91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

想做一個QT版本的查找編輯框(類似百度,輸入關鍵詞自動列出匹配結果),QComplater無法自定義匹配規則(模糊匹配),網上找了一些,或多或少都有bug,因此自己寫了一個,基本上還算完美,不過細節沒做優化。

資源截圖

代碼片段和文件信息

#include?“StdAfx.h“
#include?“qfindedit.h“

QFindEdit::QFindEdit(QWidget?*parent)
:?QLineEdit(parent)
?m_bEditFocus(true)
{
setPlaceholderText(“please?input?find?word“);

m_stringListmodel?=?new?QStringListModel(this);
m_pFindWnd?=?new?QListView(this);
//m_pFindWnd->setWindowFlags(Qt::Popup);
m_pFindWnd->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_pFindWnd->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_pFindWnd->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pFindWnd->setSelectionMode(QAbstractItemView::SingleSelection);
m_pFindWnd->setParent(0?Qt::Popup);
m_pFindWnd->setFocusPolicy(Qt::NoFocus);
m_pFindWnd->setFocusProxy(this);

connect(this?SIGNAL(textEdited(const?QString&))?this?SLOT(textEditedSlot(const?QString&)));
Qobject::connect(m_pFindWnd?SIGNAL(clicked(QModelIndex))
this?SLOT(clickedSlot(QModelIndex)));
Qobject::connect(this?SIGNAL(activated(QModelIndex))
m_pFindWnd?SLOT(hide()));

this->installEventFilter(this);
m_pFindWnd->installEventFilter(this);

}

QFindEdit::~QFindEdit()
{
delete?m_pFindWnd;
}

QStringList&?QFindEdit::stringList()
{
return?m_stringList;
}

void?QFindEdit::showFindWnd(const?QString&?text)
{
//效率較低,需要優化
QStringList?sl;??
foreach(QString?word?m_stringList)?{??
if?(word.contains(text))?{??
sl?< }??
}

if?(sl.size()?==?0)?
{
hideFineWnd();
return;
}
m_stringListmodel->setStringList(sl);??
m_pFindWnd->setModel(m_stringListmodel);??

//高度需要優化
m_pFindWnd->resize(rect().width()?200);
QPoint?pTopleft?=?mapToGlobal(rect().bottomLeft());
m_pFindWnd->move(pTopleft.x()?pTopleft.y());
m_pFindWnd->show();
}

void?QFindEdit::textEditedSlot(const?QString&?text)
{
QString?strText?=?text.trimmed();
if?(!strText.isEmpty())
{
showFindWnd(strText);
}
else
{
hideFineWnd();
}
}

void?QFindEdit::clickedSlot(QModelIndex?modelIndex)
{
setText(m_pFindWnd->model()->data(modelIndex).toString());
hideFineWnd();
}

void?QFindEdit::hideFineWnd()
{
m_pFindWnd->hide();
}

bool?QFindEdit::eventFilter(Qobject?*o?QEvent?*e)
{
if?(m_bEditFocus?&&?(o?==?this)?&&?e->type()?==?QEvent::FocusOut)?
{
if?(m_pFindWnd?&&?m_pFindWnd->isVisible())
return?true;
}

if?(o?!=?m_pFindWnd)
return?__super::eventFilter(o?e);

switch?(e->type())?
{
case?QEvent::KeyPress:?
{
QKeyEvent?*ke?=?static_cast(e);
QModelIndex?curIndex?=?m_pFindWnd->currentIndex();
QModelIndexList?selList?=?m_pFindWnd->selectionModel()->selectedIndexes();
const?int?key?=?ke->key();

if?((key?==?Qt::Key_Up?||?key?==?Qt::Key_Down)?&&?selList.isEmpty()?&&?curIndex.isValid()?)
{
m_pFindWnd->setCurrentIndex(curIndex);
return?true;
}

switch?(key)?
{
case?Qt::Key_End:
case?Qt::Key_Home:
if?(ke->modifiers()?&?Qt::ControlModifier)
return?false;
break;

case?Qt::Key_Up:
if?(!curIndex.i

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????4746??2012-02-25?17:35??qfindedit.cpp

?????文件????????685??2012-02-25?17:31??qfindedit.h

-----------?---------??----------?-----??----

?????????????????5431????????????????????2


評論

共有 條評論