簡述
相信大家都用過詞典吧!因為英語不太好。。。O(∩_∩)O~,是以經常進行劃詞翻譯!
| 版權聲明:一去、二三裡,未經部落客允許不得轉載。
實作
原理:滑鼠移至某單詞之上,擷取滑鼠位置,然後在對應位置進行取詞,翻譯!
基于此原理,下面我們實作為每一個單詞顯示QToolTip。
效果
源碼
建立QTextEdit隊形,然後通過installEventFilter進行事件監聽。
m_pTextEdit = new QTextEdit(this);
m_pTextEdit->setObjectName("highlightLabel");
m_pTextEdit->append(QString::fromLocal8Bit("一去丶二三裡"));
m_pTextEdit->append(QString::fromLocal8Bit("青春不老,奮鬥不止!"));
m_pTextEdit->append(QString::fromLocal8Bit("You are not alone."));
m_pTextEdit->append(QString::fromLocal8Bit("進步始于交流,收獲源于分享。"));
// 安裝事件過濾器
m_pTextEdit->installEventFilter(this);
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == m_pTextEdit)
{
// 事件為提示
if (event->type() == QEvent::ToolTip)
{
QHelpEvent *pHelpEvent = static_cast<QHelpEvent *>(event);
// 擷取光标
QTextCursor cursor = m_pTextEdit->cursorForPosition(pHelpEvent->pos());
cursor.select(QTextCursor::WordUnderCursor);
// 顯示提示資訊
QToolTip::showText(pHelpEvent->globalPos(), cursor.selectedText());
return true;
}
}
return QDialog::eventFilter(obj, event);
}
更多參考
- Qt之密碼框不可選中、複制、粘貼、無右鍵菜單等