Как получить событие Click QLineEdit
в Qt?
Я не вижу SLOT, связанного с нажатием кнопки QLineEdit
?
Как получить событие Click QLineEdit
в Qt?
Я не вижу SLOT, связанного с нажатием кнопки QLineEdit
?
Вам необходимо переопределить focusInEvent в новом классе, расширяющем QLineEdit. Следующие ссылки помогут вам.
Я не думаю, что подкласс 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::FocusIn) {
// bring up your custom edit
return false; // lets the event continue to the edit
}
return false;
}
Хотя нет "щелкнутого" или "введенного" события. Вы можете использовать
void cursorPositionChanged(int old, int new)
Сигнал. Он выдается, когда пользователь нажимает кнопку lineedit (если он включен), а также в нескольких других случаях, поэтому вам нужно проверить, какое из событий произошло на самом деле, но я думаю, что это все же проще, чем подклассы или использование прослушивателя событий для некоторых приложений,
Я не знаю, если это поможет, мне нужно было вызвать функцию после ввода текста. Вот как я это сделал.
connect(ui->passwordSetLineEdit,SIGNAL(textEdited(QString)),this,SLOT(onTextEdit(QString)));
при вводе текста текст будет выдан на экран, поэтому будет вызываться функция onTextEdit.
Нет сигналов типа clicked()
для QLineEdit
, но вы можете подклассифицировать его и испустить такой сигнал в своей пользовательской реализации mouseReleaseEvent
.