crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Прокрутка в QScrollArea
Анна
  опции профиля:
сообщение 26.2.2019, 18:00
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Суть проблемы:
Есть очень длинная форма для заполнения с QSpinBox, с QComboBox и т.п. Поскольку окно ограничено в размерах, то форма размещена на QScrollArea.
При кручении колёсика и прокрутке формы курсор мыши может оказаться на QSpinBox или QComboBox, и тогда их значения резко меняются.

Хочется, чтобы прокрутку формы можно было осуществлять только таская бегунок скроллера мышкой.
Пожалуйста, помогите реализовать. А то просто зашиваюсь по времени.
Если есть возможность "прихлопнуть" возможность изменения значений QSpinBox или QComboBox при вращении колёсика, такой вариант тоже сгодится. Может, такой вариант даже больше подойдёт.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Анна
  опции профиля:
сообщение 28.2.2019, 16:32
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


В общем, получился такой вариант:

bool MyWidget::eventFilter(QObject *target, QEvent *event)
{
    if(event->type() == QEvent::Wheel)
    {
        const char *className = target->metaObject()->className();
        if(QString(className) == QString("QComboBox"))
        {
             QCoreApplication::sendEvent(ui.scrollArea, event);
                         return true;
        }
        if(QString(className) == QString("QSpinBox") && !((QWidget*)target)->hasFocus() )
        {
            QCoreApplication::sendEvent(ui.scrollArea, event);
                        return true;
        }
    }
    return QWidget::eventFilter(target, event);
}


(Исправила немного, потому что в первом варианте фигня получилась. Так вроде бы правильно)

В конструкторе MyWidget у всех спинбоксов и комбобоксов вызываю installEventFilter(this), и устанавливаю StrongFocus.

В результате форма прокручивается, все спинбоксиы и комбрбоксы игнорируют вращение колеса, в спинбоксах колесо меняет значение только если кликнуть непосредственно в поле спинбокса и удерживать там мышку.

Сообщение отредактировал Анна - 4.3.2019, 10:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Анна   Прокрутка в QScrollArea   26.2.2019, 18:00
- - Алексей1153   Анна, прочитай описание void QWidget::wheelEvent(...   27.2.2019, 7:44
- - Анна   Спасибо. Совсем забыла про installEventFiltr(). Бе...   27.2.2019, 11:16
- - Алексей1153   Анна, где диапазон типа unsigned int или long long...   27.2.2019, 13:20
- - Анна   Не скажите. Многие инженеры стрелочками спинбоксов...   27.2.2019, 15:31
- - Анна   Не скажите. Многие инженеры стрелочками спинбоксов...   28.2.2019, 12:48
- - Анна   В общем, получился такой вариант: bool MyWidget...   28.2.2019, 16:32
- - Анна   Осталось только выудить спинбоксы, которые размеще...   1.3.2019, 14:43
- - Алексей1153   Анна, Раскрывающийся текствместо такой конструк...   1.3.2019, 20:03
|- - Анна   Цитата(Алексей1153 @ 1.3.2019, 20:03) Анн...   4.3.2019, 10:57
|- - Анна   Цитата(Алексей1153 @ 1.3.2019, 20:03) Анн...   4.3.2019, 15:14
- - Алексей1153   Анна, ЦитатаThe qobject_cast() function behaves ...   4.3.2019, 11:24
- - Алексей1153   Анна, у меня вроде не затыкается, либо скажи, как ...   4.3.2019, 15:37
- - Анна   Алексей1153, Цитата(Алексей1153 @ 4.3.2019, 1...   4.3.2019, 16:12
- - Алексей1153   Раскрывающийся текстЦитата(Анна @ 4.3.2019, 1...   4.3.2019, 18:37
- - Анна   Цитата(Алексей1153 @ 4.3.2019, 18:37) вот...   6.3.2019, 13:52
- - Алексей1153   Анна, Свой виджет давать не надо, просто накидай в...   6.3.2019, 14:29
- - Анна   Цитата(Алексей1153 @ 6.3.2019, 14:29) нак...   6.3.2019, 16:32
- - Алексей1153   Цитата(Анна @ 6.3.2019, 18:32) А что каса...   6.3.2019, 17:56
- - Анна   Цитата(Алексей1153 @ 6.3.2019, 17:56) нел...   6.3.2019, 19:16
- - Алексей1153   Анна, щас попробую с QMdiSubWindow пример нарисова...   6.3.2019, 19:34
- - Алексей1153   кое-что исправил и упростил. В примере две кнопки ...   6.3.2019, 21:05
- - Анна   Цитата(Алексей1153 @ 6.3.2019, 21:05) пок...   11.3.2019, 15:30
- - Алексей1153   Анна, у меня Qt 5.9.2, а на сайте уже аж 5.13 htt...   11.3.2019, 16:01
- - Анна   Цитата(Алексей1153 @ 11.3.2019, 15:58) ht...   11.3.2019, 16:22
- - Анна   Цитата(Алексей1153 @ 11.3.2019, 16:01) ты...   11.3.2019, 17:42
- - Алексей1153   Цитата(Анна @ 11.3.2019, 18:22) Там в sin...   11.3.2019, 18:18
- - Анна   Цитата(Алексей1153 @ 11.3.2019, 18:18) не...   12.3.2019, 10:30
- - Анна   Затыки прокрутки при попадании мышки на бокс решил...   12.3.2019, 12:15
- - Алексей1153   Анна, это ты про lanz'а, наверное, говоришь ht...   12.3.2019, 12:34
|- - Анна   Цитата(Алексей1153 @ 12.3.2019, 12:34) Ан...   13.3.2019, 10:54
- - Алексей1153   Цитата(Анна @ 13.3.2019, 12:54) Проблема ...   13.3.2019, 12:25


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 21:22