Russian Qt Forum

Qt => Общие вопросы => Тема начата: L.Marvell от Август 02, 2005, 17:10



Название: wheelEvent
Отправлено: L.Marvell от Август 02, 2005, 17:10
при скроллинге должна показываться следующая/предыдущая картинка, но картинки показываются через одну, т.е. шаг скроллинга явно больше, чем 1 (это в винде). Смотрел настройки грызуна, шаг стоит 1 линия на скролл. Подскажите пожалуйста как исправить сие дело.


Название: wheelEvent
Отправлено: Sergeich от Август 04, 2005, 03:06
QApplication::setWheelScrollLines ( int n )


Название: wheelEvent
Отправлено: L.Marvell от Август 04, 2005, 12:10
Цитата: "Sergeich"
QApplication::setWheelScrollLines ( int n )

Не помогает, ставлю в main.cpp app.setWheelScrollLines(1), но эфекта никакого. У меня скроллер с тиками (или как оно там) и вот при каждом тике перепрыгивает через фотку, уже и не знаю, что делать.


Название: wheelEvent
Отправлено: L.Marvell от Август 04, 2005, 12:23
При том setWheelScrollLines() вообще никак не влияет на мою прогу - ставил 3, все равно прыгает через одну картинку, хотя казалось должно через 3 (или 2, ну вобщем неважно, не работает :( )


Название: wheelEvent
Отправлено: L.Marvell от Август 04, 2005, 17:53
Итак, следующая конструкция при скроллинге показала целых два меседж бокса (это я хотел проверить, что вообще содержит event->delta()):

Код:
void MScrollArea::wheelEvent(QWheelEvent *event)
{
QMessageBox(this, tr("message"), QString::number(event->delta()));
}

После чего следующий код (возможно не очень красивый, но это первое, что пришло в голову) исправил ситуацию с перепрыгиванием картинок:

Код:
...
int eventCount = 0;
...

void MScrollArea::wheelEvent(QWheelEvent *event)
{
if (eventCount == 1) {
if (event->delta() > 0) {
...
}else{
...
}
eventCount = 0;
}else{
++eventCount;
}
}

Спасибо всем за внимание.