Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: xintrea от Июль 08, 2009, 13:18



Название: QTextEdit - Как отловить моменты появления/исчезновения полосы прокрутки?
Отправлено: xintrea от Июль 08, 2009, 13:18
Здравствуйте!


Имеем объект QTextEdit. Когда пишем текст, и текста становится много, появляется движок прокрутки. Когда удаляем текст, и весь текст начинает умещаться в области QTextEdit, движок прокрутки исчезает.

Эти моменты и нужно отловить. Как?

Смотрю доку по QAbstractScrollArea, ничего похожего не вижу.


Название: Re: QTextEdit - Как отловить моменты появления/исчезновения полосы прокрутки?
Отправлено: Rcus от Июль 08, 2009, 13:57
QAbstractScrollArea::verticalScrollBar(), QObject::installEventFilter, QEvent::Hide/Show?


Название: Re: QTextEdit - Как отловить моменты появления/исчезновения полосы прокрутки?
Отправлено: xintrea от Июль 08, 2009, 18:32
QAbstractScrollArea::verticalScrollBar(), QObject::installEventFilter, QEvent::Hide/Show?

Спасибо, получилось!

Код:
EditorTextArea::EditorTextArea(QWidget *parent) : QTextEdit(parent)
{
 // Устанавливается фильтр на событие показа или скрытия области прокрутки
 this->verticalScrollBar()->installEventFilter(this);
}

...

bool EditorTextArea::eventFilter(QObject *o, QEvent *e)
{
 // Обработка показа или скрытия области прокрутки редактора
 if(o==this->verticalScrollBar())
  if(e->type()==QEvent::Hide || e->type()==QEvent::Show)
   {
    qDebug() << "Scroll bar switch between hide and show";
   }
}