Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: pavlov от Февраль 02, 2011, 23:02



Название: mouse move
Отправлено: pavlov от Февраль 02, 2011, 23:02
Всем привет!

Есть QMainWindow на который помещен виджет QScrollArea.

MyWindow::MyWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MyWindow)
{
    ui->setupUi(this);
    QFrame *frame = new QFrame();
    ...
    ui->scrollArea->setWidget(frame);
}

Мне необходимо обрабатывать перемещение указателя мыши над ui->scrollArea
но QScrollArea не генерирует подходящий сигнал.

Как решить данную задачу?

Пробовал переопределять функцию void mouseMoveEvent(QMouseEvent* event);
у MyWindow, но при этом когда курсор мыши перемещается над scrollArea
эта функция не вызывается.



Название: Re: mouse move
Отправлено: alexman от Февраль 02, 2011, 23:15
Если правильно понял, то вам нужно отлавливайть движения мыши для frame.


Название: Re: mouse move
Отправлено: _govorilka от Февраль 03, 2011, 07:01
Сделай наследника класса QFrame. У него переопредели mouseMoveEvent(), и затем положи его в scrollArea.

Если ты хочешь рисовать внутри scrollArea, то лучше взять QGraphicsView, там много работы уже сделано.


Название: Re: mouse move
Отправлено: alexman от Февраль 03, 2011, 09:36
Сделай наследника класса QFrame. У него переопредели mouseMoveEvent(), и затем положи его в scrollArea.
Можно и без наследника... void QObject::installEventFilter ( QObject * filterObj )