Название: QT3 и MouseMoveEvent Отправлено: Martiro от Декабрь 19, 2007, 10:30 Проблема в следущем...
Хочу, чтобы при перемещении мыши по QCanvasView, бегали координаты рисунка. Но почему-то при перемещении ничего не работает, а работает только при нажатии левой клавиши мыши. Как сделать так, чтобы координаты считывались сразу, без нажатия? Код: /*virtual*/ void QCanvasView::contentsMouseMoveEvent( QMouseEvent *me) Название: Re: QT3 и MouseMoveEvent Отправлено: ритт от Декабрь 19, 2007, 10:34 сетМоусеТрэкинг(тру) ?
есть в тройке вообще такое? в четвёрке решается так Название: Re: QT3 и MouseMoveEvent Отправлено: Martiro от Декабрь 19, 2007, 10:37 В том вся и фигня что setMouseTracking стоит в TRUE.
Вообще, я класс переписываю, и добавляю на форму. И в переписанном классе и на главной форме стоит setMouseTracking(TRUE). Название: Re: QT3 и MouseMoveEvent Отправлено: Kainit от Декабрь 19, 2007, 10:48 http://doc.trolltech.com/3.3/qwidget.html#mouseMoveEvent (http://doc.trolltech.com/3.3/qwidget.html#mouseMoveEvent)
If mouse tracking is switched off, mouse move events only occur if a mouse button is pressed while the mouse is being moved. If mouse tracking is switched on, mouse move events occur even if no mouse button is pressed. setMouseTracking(true); - работает, проверял лично! Название: Re: QT3 и MouseMoveEvent Отправлено: Martiro от Декабрь 19, 2007, 10:58 я использую contentsMouseMoveEvent, но это не принципиально (без разницы)...
Если использовать функцию mouseMoveEvent, работает нормально до тех пор, пока в QCanvasView не добавляется рисунок (в качестве background). Название: Re: QT3 и MouseMoveEvent Отправлено: Kainit от Декабрь 19, 2007, 14:59 1. код в студию
2. в случае добавления картинки, возможно имеет смысл дальнейшие маус мувы снимать уже с картинки... Название: Re: QT3 и MouseMoveEvent Отправлено: Martiro от Декабрь 19, 2007, 15:13 Главная форма:
Цитировать mainForm::mainForm(QWidget* pwgt/*=0*/, const char* pszName/*=0*/) : QWidget(pwgt, pszName) { ... canvas1.resize(1000,1000); cv1 = new jnCanvasView(&canvas1, this); ... canvas1.setBackgroundPixmap(img); canvas1.resize(img.width(), img.height()); canvas1.update(); ... setMouseTracking(TRUE); ... } Переписанный класс QCanvasView (jnCanvasView): Цитировать jnCanvasView::jnCanvasView ( QCanvas * canvas, QWidget * parent = 0, const char * name = 0, WFlags f = 0 ) : QCanvasView(canvas, parent, name) { ... lbCoordX = new QLabel (this); lbCoordY = new QLabel (this); ... setMouseTracking(TRUE); ... } void jnCanvasView::contentsMouseMoveEvent( QMouseEvent *me) { int iX, iY; iX = me->x(); iY = me->y(); lbCoordX->setText(QString::number(iX)); lbCoordY->setText(QString::number(iY)); } А как снимаются маусмувы с картинки? Название: Re: QT3 и MouseMoveEvent Отправлено: Kainit от Декабрь 20, 2007, 10:41 Цитировать А как снимаются маусмувы с картинки? Нет, с такой картинки никак :-)canvas1.setBackgroundPixmap(img); Блин, жутко влом ставить Qt 3.3. А вместо contentsMouseMoveEvent обычный mouseMoveEvent не пробовали? Наверное пробовали... Я насчёт себя могу сказать что в 4.3 всё нормально и с любыми фоновыми картинками ловится. Может в 3.3 была такая бага? |