Qt Designer не предназначен для этого уровня программирования WYSIWYG.
Сделайте это в C ++:
class LineEdit : public QLineEdit
{
virtual void focusInEvent( QFocusEvent* )
{}
};
Существует сигнал "focusChanged", отправленный, когда фокус изменяется, представленный в Qt 4.1.
Это имеет два аргумента, он проигрышный фокус виджета и один фокус получения:
void QApplication::focusChanged(QWidget * old, QWidget * now)
Самый простой путь состоит в том, чтобы подключить слот к QApplication:: сигнал focusChanged.
Я должен был бы играть с ним, но просто рассмотрение спокойной Документации, существует "focusInEvent". Это - обработчик событий.
Вот то, как Вы находите информацию о.... Откройте "спокойный Помощник". Перейдите к Индексу. Вставьте "QLineEdit". Существует действительно полезная ссылка, названная "Список всех участников, включая наследованных участников" на всех страницах Widget. Этот список является большим, потому что он даже имеет наследованный материал.
я сделал быстрый поиск "Фокуса" и нашел весь материал связанным с фокусом для этого Виджета.
Вы столкнулись со странными разбиениями в QT, если вы посмотрите на документацию focusInEvent
, это не слот, это защищенная функция, вы можете переопределить ее, если реализуете подкласс вашего виджета. Если вы просто хотите отловить событие, поступающее в ваш виджет, вы можете использовать QObject::installEventFilter
, чтобы вы могли отлавливать любые события.
По какой-то странной причине разработчики Trolltech решили распространять события пользовательского интерфейса через два пути, сигналы / слоты и QEvent
QWidget :: setFocus () - это слот, а не сигнал. Вы можете проверить, находится ли QLineEdit в фокусе, с помощью свойства focus . QLineEdit испускает сигналы, когда текст изменяется или редактируется, см. Документацию.
Можно добавить en фильтр событий
.
.
Это пример приложения, написанного с QtCreator. Эта форма имеет QComboBox с именем combobox.
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->comboBox->installEventFilter(this);
.
.
.
}
bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::FocusOut)
{
if (object == ui->comboBox)
{
qWarning(object->objectName().toLatin1().data());
}
}
return false;
}