簡體   English   中英

不依賴鼠標的QTooltip

[英]QTooltip that does not depend on mouse

我目前正在嘗試在小部件的focusOutEvent上顯示工具提示。 該工具提示基本上驗證了小部件(QLineEdit)中的數據。 現在的問題是我想使用工具提示顯示錯誤或問題。 這是我在做什么

void MyLineEdit::focusOutEvent(QFocusEvent *e)
{
  QLineEdit::focusOutEvent(e);
  QToolTip::showText( this->mapToGlobal( QPoint( 0, 0 ) ), "Something got it" );
  emit(focussed(false));
}

現在的問題是QTooltip沒有顯示,可能是因為鼠標在移動。 我的問題是如何顯示QTooltip並將其保留在那里直到我希望將其關閉?

僅當QHelpEvent被攔截時才會顯示工具提示。 雖然您可以使用QCoreApplication::PostEvent和子類QWidget::eventfocusOutEvent發送一個,像這樣

bool MyLineEdit::event (QEvent *event)
{
    if (event->type() == QEvent::ToolTip) {
         QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
         QToolTip::showText(helpEvent->globalPos(), "Something got it");

         return false;
     }
     return QWidget::event(event);
}

,這有兩個不良后果。

1)每當正常顯示工具提示時(即,當鼠標指針停留在小部件上幾秒鍾時),事件仍將觸發。 您將必須實現某種識別機制,以將您自己的幫助事件與其他事件區分開。

2)工具提示僅在相應窗口小部件被聚焦時才處於活動狀態。 因此,在失去焦點時顯示工具提示僅會顯示幾秒鍾,直到處理下一個事件循環為止。

后者可能有一種解決方法,但是,此時,最好將工具提示留作預期的用途,並實施您自己的偽工具提示,您可以直接控制該工具提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM