2011-06-23 51 views

回答

1

沒有信號如點擊()爲QLineEdit的,但你也可以繼承它,在你的自定義實現發出這樣的信號mouseReleaseEvent。

2

我dono如果這將幫助, 我不得不調用一個函數,一旦輸入文本。這是我做到的。

當輸入信號textEdited文本
connect(ui->passwordSetLineEdit,SIGNAL(textEdited(QString)),this,SLOT(onTextEdit(QString))); 

將emited,因此我onTextEdit函數將被調用。

17

我不認爲子類化QLineEdit是正確的選擇。如果你不需要子類,爲什麼呢?你可以改用事件過濾器。檢查出QObject::eventFilter

例子:

MyClass::MyClass() : 
    edit(new QLineEdit(this)) 
{ 
    edit->installEventFilter(this); 
} 

bool MyClass::eventFilter(QObject* object, QEvent* event) 
{ 
    if(object == edit && event->type() == QEvent::MouseClick) { 
     // bring up your custom edit 
     return false; // lets the event continue to the edit 
    } 
    return false; 
} 
+1

看起來像'QEvent :: FocusIn'是更合適的類型在這裏。 – gluk47

+0

沒有'QEvent :: MouseClick'事件。改爲使用'QEvent :: MouseButtonPres' – semanser

4

雖然沒有 「點擊」 或 「已進入」 事件。您可以使用

void cursorPositionChanged(int old, int new) 

Signal。當用戶點擊lineedit時(如果啓用的話)以及其他一些情況下,它會被髮射,因此您必須驗證實際發生了哪些事件,但我認爲這比繼承子類或在某些應用程序中使用事件偵聽器更容易。