我希望能夠知道是否在QLineEdit
這是一個點擊。所以我想我應該重新實現以下功能(??):如何知道QLineEdit是否得到了重點?
void QLineEdit::focusInEvent (QFocusEvent * e) [virtual protected]
我應該怎麼做?
另外,請告訴我如何使用focusInEvent()
函數,以便知道QLineEdit myEdit;
對象是否有焦點。
編輯:我寫了下面的功能:
bool LoginDialog::eventFilter(QObject *target, QEvent *event)
{
if (target == m_passwordLineEdit)
{
if (event->type() == QEvent::FocusIn)
{
if(checkCapsLock())
{
QMessageBox::about(this,"Caps Lock", "Your caps lock is ON!");
}
return true;
}
}
return QDialog::eventFilter(target, event);
}
並在LoginDialog
類的構造函數註冊m_passwordLineEdit
這樣的:
m_passwordLineEdit->installEventFilter(this);
而且它落入MessageBox-的無限循環ES。請幫我解決這種情況。其實我想用彈出窗口來實現這個功能(不是用QMessageBox
)。需要使用QLabel
可以嗎?
我想用bool eventFilter(QObject * target,QEvent * event)實現以便不寫一個子類。已經寫以下代碼: BOOL ::的LoginDialog eventFilter(的QObject *目標,QEvent的*事件) { 如果(目標== m_passwordLineEdit) { 如果(事件 - >類型()== QEvent的::的focusIn) (checkCapsLock()) QMessageBox :: about(this,「Caps Lock」,「Your caps lock is ON!」); } return true; } } return QDialog :: eventFilter(target,event); } 我陷入了無限循環的MessageBox-es。 :( – Narek 2010-06-10 09:32:40
這是因爲你的'm_passwordLineEdit'會在顯示一個消息框時失去焦點,當這個盒子關閉時再次獲得焦點,導致再次顯示該盒子... – Job 2010-06-10 09:54:29
我建議顯示一些永久消息(例如,在你的下面(在線編輯)當Caps Lock打開時,即使它沒有焦點 – Job 2010-06-10 09:57:47