crossplatform.ru

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

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


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

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

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




Репутация:   4  


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

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


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Анна,


Раскрывающийся текст
вместо такой конструкции

const char *className = target->metaObject()->className();
if(QString(className) == QString("QComboBox"))
{
    ...
}


удобнее использовать такую
if(auto* w=dynamic_cast<QComboBox*>(target))
{
    w->...
}


накидал вот вариант обработчика. В аттаче файлы тестового диалога, создай диалог, чтобы посмотреть работу класса обработчика:

    MyWidget dlg(0);
    dlg.exec();


Прикрепленный файл  CMyScrollHandler.zip ( 2.87 килобайт ) Кол-во скачиваний: 602


Сообщение отредактировал Алексей1153 - 1.3.2019, 20:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 4.3.2019, 15:14
Сообщение #3


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

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

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




Репутация:   4  


Цитата(Алексей1153 @ 1.3.2019, 20:03) *
Анна,
накидал вот вариант обработчика. В аттаче файлы тестового диалога, создай диалог, чтобы посмотреть работу класса обработчика:

    MyWidget dlg(0);
    dlg.exec();


Прикрепленный файл  CMyScrollHandler.zip ( 2.87 килобайт ) Кол-во скачиваний: 602


При таком варианте прокрутка "затыкается", как только мышка попадает на спинбокс или комбобокс.

Сделаю гибрид.
Правда, у меня есть подозрение, что в моём варианте не вё так просто с sendEvent(). Я считала, что этим вызовом передаю событие колеса, предназначенное дочернему виджету, в область прокрутки. Увы, в какой-то момент при закрытии окна иногда происходит обвал. Как я поняла - попытка удалить стековый экземпляр.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Анна   Прокрутка в 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


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


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




RSS Текстовая версия Сейчас: 28.3.2024, 15:43