Qt: фокус lineEdit

468
23 декабря 2016, 14:12

Есть форма в QtCreator, на ней lineEdit и кнопки. Как сделать, чтобы lineEdit всегда оставался в фокусе (чтобы каретка мигала), независимо от нажатий на кнопки, перемещения или любых других действий с формой?

Answer 1

Попробоуйте вызвать у кнопки метод после создания:

button->setFocusPolicy(Qt::NoFocus);

Или выставить соотвествующее поле в QtCreator. Тем самым кнопку не будет получать фокус.

Answer 2

А может быть, добавить перехват нажатия клавиши на клавиатуре главному окну и вписать туда передачу фокуса lineEdite?

"Мигать" курсор не будет, но по идее можно добиться того, чтобы текст всегда вписывался туда, куда нужно, где до этого ни был фокус.

void Widget::keyPressEvent(QKeyEvent *ev)
{
lineEdit->setFocus();
lineEdit->setText(ev->text());
}
void Widget::keyReleaseEvent(QKeyEvent *ev)
{
// или так
}

Widget тут надо заменить вашей главной формой

Answer 3

Можно сделать свой "жадный" виджет, который ни с кем фокусом делиться не будет.

class LineEdit : public QLineEdit{
public:
    explicit LineEdit(QWidget *parent = 0):
        QLineEdit(parent)
    {}
protected:
    void focusOutEvent(QFocusEvent *){
        setFocus();
    }
};
READ ALSO
Qt SQLite Обращение к результатам select'а через названия полей

Qt SQLite Обращение к результатам select'а через названия полей

Сейчас моё обращение к БД выглядит так:

310
Можно ли вызвать MPI_Init() внутри своей функции?

Можно ли вызвать MPI_Init() внутри своей функции?

В сигнатуре указано int MPI_Init( int* argc, char*** argv), что как бе намекает на то, что я данную функцию могу вызвать только внутри int main(int argc, char** argv)

276
Наследование С++ [требует правки]

Наследование С++ [требует правки]

Требуется организовать множественное наследование на языке С++ по данной схеме:

285
Замена данных в ячейках float [требует правки]

Замена данных в ячейках float [требует правки]

Имеется некоторое число floatНеобходимо написать программу, которая заменяет в представлении этого числа последний байт на значение "0xAA" и, после...

259