Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: mokynis от Май 14, 2023, 08:31



Название: QPlainTextEdit меняется при установке обработчика событий
Отправлено: mokynis от Май 14, 2023, 08:31
здравствуйте.
На форме есть QPlainTextEdit. Нужно сравнить текст в нем до- и после- изменения. Пытаюсь отследить получение и потерю виджетом фокуса.
В .h
Код:
class FocusFilter:public QObject
{
    public:
        FocusFilter(QObject* pobj=0);
    protected:
        virtual bool eventFilter(QObject*,QEvent*);
};
В .cpp
Код:
ui->TEOpis->installEventFilter(new FocusFilter(ui->TEOpis));

и
Код:
FocusFilter::FocusFilter(QObject *pobj):QObject(pobj)
{
}
bool FocusFilter::eventFilter(QObject * obj, QEvent *ev)
{
    QString tmp_opis;
    if(obj->objectName()=="TEOpis")
    {
        if(((QFocusEvent*)ev)->type()==QEvent::FocusIn)
            tmp_opis=((QPlainTextEdit*)obj)->toPlainText();
        else if(ev->type()==QEvent::FocusOut)
        {
            if(tmp_opis!=((QPlainTextEdit*)obj)->toPlainText()) //текст был изменен
                tmp_opis=((QPlainTextEdit*)obj)->toPlainText();
        }
        return true;
    }
    return false;
}
Все работает, только вот QPlainTextEdit на форме выглядит, как совсем маленький QLineEdit, и накакие фиксированные размеры и установка минимальных размеров не помогают. Что я сделал не так?


Название: Re: QPlainTextEdit меняется при установке обработчика событий
Отправлено: mokynis от Май 14, 2023, 09:03
сам спросил, сам решил... Хотя решение не совсем удачное. Вместо QPlainTextEdit поставил QTextEdit. Он не сжимается. Но все-таки, почему так странно ведет себя QPlainTextEdit?


Название: Re: QPlainTextEdit меняется при установке обработчика событий
Отправлено: mokynis от Май 14, 2023, 10:43
"не понос, так золотуха". Все равно не получается: стоит подключить фильтр, QTextEdit становится недоступным для редактирования. Что можно сделать, чтобы ввести длинную надпись и отследить окончание редактирования?


Название: Re: QPlainTextEdit меняется при установке обработчика событий
Отправлено: kambala от Май 14, 2023, 23:01
нужно возвращать true только для тех событий, которые были пойманы и которые не должны быть обработаны стандартным образом. у тебя получается, что ты «съедаешь» абсолютно все события TEOpis, потому и не работает.


Название: Re: QPlainTextEdit меняется при установке обработчика событий
Отправлено: mokynis от Май 16, 2023, 11:30
Wow! То, что надо, спасибо!