здравствуйте.
На форме есть 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, и накакие фиксированные размеры и установка минимальных размеров не помогают. Что я сделал не так?