[英]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::event
從focusOutEvent
發送一個,像這樣
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.