@@ -149,6 +149,7 @@ bool CAddressCompleter::eventFilter(QObject *watched, QEvent *event)
149149 switch (event->type ()) {
150150 case QEvent::KeyPress: {
151151 QKeyEvent *keyEvent = static_cast <QKeyEvent*>(event);
152+ // qDebug(log) << Q_FUNC_INFO << keyEvent;
152153 switch (keyEvent->key ()) {
153154 case Qt::Key_Down:
154155 if (m_isCompleterVisible) {
@@ -168,7 +169,9 @@ bool CAddressCompleter::eventFilter(QObject *watched, QEvent *event)
168169 selectCurrentItem ();
169170 return true ;
170171 }
171- emit urlSelected (m_pLineEdit->text ());
172+ if (m_pLineEdit) {
173+ emit urlSelected (m_pLineEdit->text ());
174+ }
172175 break ;
173176 case Qt::Key_Escape:
174177 hideCompleter ();
@@ -276,27 +279,28 @@ void CAddressCompleter::performSearch()
276279
277280 addedUrls.insert (url);
278281
279- if (url == m_pLineEdit->text ())
280- m_currentSelectedIndex = count;
281-
282282 count++;
283283 }
284284
285285 // 如果没有找到历史记录,显示搜索建议
286286 if (0 == count) {
287287 addSearchSuggestions (keyword);
288288 } else if (1 == count) {
289+ // 防止重复显示
289290 if (*addedUrls.begin () == m_pLineEdit->text ())
290291 return ;
291292 }
292293
293294 // 如果有结果,显示下拉列表
294295 if (m_pListWidget->count () > 0 ) {
295- if (-1 < m_currentSelectedIndex) {
296- m_pListWidget->setCurrentRow (m_currentSelectedIndex);
297- // 确保选中项可见
298- m_pListWidget->scrollToItem (m_pListWidget->item (m_currentSelectedIndex));
299- }
296+ // 选中第一项
297+ if (-1 == m_currentSelectedIndex)
298+ m_currentSelectedIndex = 0 ;
299+
300+ m_pListWidget->setCurrentRow (m_currentSelectedIndex);
301+ // 确保选中项可见
302+ m_pListWidget->scrollToItem (m_pListWidget->item (m_currentSelectedIndex));
303+
300304 showCompleter ();
301305 } else {
302306 hideCompleter ();
@@ -315,7 +319,7 @@ void CAddressCompleter::addSearchSuggestions(const QString &keyword)
315319 QListWidgetItem *pSearchItem = new QListWidgetItem (m_pListWidget);
316320 if (pSearchItem) {
317321 pSearchItem->setSizeHint (QSize (0 , 40 ));
318- pSearchItem->setData (Qt::UserRole, QString (" search:%1" ).arg (keyword));
322+ pSearchItem->setData (Qt::UserRole, QString (" @ search:%1" ).arg (keyword));
319323
320324 CAddressCompleterItem *pCompleterItem = new CAddressCompleterItem (
321325 searchText,
@@ -361,10 +365,12 @@ void CAddressCompleter::onItemClicked(QListWidgetItem *item)
361365 QString url = item->data (Qt::UserRole).toString ();
362366
363367 // 处理搜索请求
364- if (url.startsWith (" search:" )) {
365- QString keyword = url.mid (7 );
368+ if (url.startsWith (" @search:" , Qt::CaseInsensitive)) {
369+ QString keyword = url.mid (8 );
370+ qDebug (log) << " emit searchRequested:" << keyword;
366371 emit searchRequested (keyword);
367372 } else {
373+ qDebug (log) << " emit urlSelected:" << url;
368374 emit urlSelected (url);
369375 }
370376
@@ -405,6 +411,7 @@ void CAddressCompleter::moveToPreviousItem()
405411
406412void CAddressCompleter::selectCurrentItem ()
407413{
414+ // qDebug(log) << Q_FUNC_INFO;
408415 if (!m_pListWidget) return ;
409416 QListWidgetItem *item = m_pListWidget->item (m_currentSelectedIndex);
410417 if (item) {
@@ -415,7 +422,7 @@ void CAddressCompleter::selectCurrentItem()
415422void CAddressCompleter::showCompleter ()
416423{
417424 if (!m_pListWidget) return ;
418- if (m_isCompleterVisible || !m_pLineEdit || m_pListWidget->count () == 0 ) {
425+ if (m_isCompleterVisible || m_pListWidget->count () == 0 ) {
419426 return ;
420427 }
421428
@@ -444,12 +451,6 @@ void CAddressCompleter::showCompleter()
444451 setGeometry (endRect);
445452 show ();
446453 }
447-
448- // 选中第一项
449- if (m_pListWidget->count () > 0 ) {
450- m_currentSelectedIndex = 0 ;
451- m_pListWidget->setCurrentRow (0 );
452- }
453454}
454455
455456void CAddressCompleter::hideCompleter ()
0 commit comments