Просмотр сообщений
|
Страниц: 1 2 [3] 4
|
31
|
Qt / Вопросы новичков / Re: Несколько раз возникает событие перерисовки paintEvent()
|
: Сентябрь 17, 2017, 14:51
|
Значения у вас выставляются, скорее всего. [...]
Спасибо. Разобралась уже. Оказывается, если рисуешь на пустом виджете, то PaintEvent возникает один раз, но если рисуешь на виджете, на который добавлено еще что-то (например, кнопка), то количество PaintEvent() растет в геометрической прогрессии.
|
|
|
32
|
Qt / Вопросы новичков / Несколько раз возникает событие перерисовки paintEvent()
|
: Сентябрь 17, 2017, 13:42
|
Здравствуйте! Не могу понять, почему возникают лишние события перерисовки paintEvent(). У меня на форме несколько виджетов, для каждого определено свое событие paintEvent(). При вызове update() всей формы вывожу в отладчик сообщения о наступлении события paintEvent() для каждого виджета, в результате наблюдаю такую картину: //Первоначальная отрисовка всего, что нужно, т.е. законно отрабатывающие события paintEvent()
NameChannelPanel::paintEvent() ChannelValuePanel::paintEvent(() GLWidget::paintGL() TimeValuePanel::paintEvent()
//Все что нужно уже отрисовалось и я вижу это на экране, далее идут непонятно с чем связанные события paintEvent() //и повторяются для каждого виджета аж 4 раза
NameChannelPanel::paintEvent() ChannelValuePanel::paintEvent() TimeValuePanel::paintEvent()
NameChannelPanel::paintEvent() ChannelValuePanel::paintEvent() TimeValuePanel::paintEvent()
NameChannelPanel::paintEvent() ChannelValuePanel::paintEvent() GLWidget::paintGL() TimeValuePanel::paintEvent()
NameChannelPanel::paintEvent() ChannelValuePanel::paintEvent() TimeValuePanel::paintEvent()
В результате на больших объемах данных программа тормозит.
|
|
|
35
|
Qt / Вопросы новичков / Re: Пустяковый вопрос про названия кнопок в Dialog Button Box
|
: Август 31, 2017, 18:54
|
у тебя включен русский интерфейс и он так работает
А, то есть кнопки в принципе не могут иметь русских названий независимо от свойства locate? Или все же что-то где-то можно подкрутить? Мне не удалось найти, где можно настроить названия кнопок. В QDialogButtonBox подобного свойства нет. Придется менять кнопки на свои...
|
|
|
36
|
Qt / Вопросы новичков / Пустяковый вопрос про названия кнопок в Dialog Button Box
|
: Август 31, 2017, 07:40
|
Здравствуйте. Скажите, это только у меня такой эффект? В дизайнере в диалоговом окне в компоненте Dialog Button Box названия кнопок отображаются на русском языке, а когда запускаешь программу - на английском...? Хотя в Dialog Button Box в свойстве locate и язык и страна указаны Russia и в программе нигде не изменяются. Qt 5.9.
|
|
|
39
|
Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности
|
: Август 24, 2017, 15:44
|
200'000 точек в графике, но ведь они на мониторе тупо не поместятся.
В настоящее время я никак не интерполирую значения. Тупо делю ширину на количество точек, получаю шаг (очень маленький), прибавляю его к текущему значению х и отображаю. Соглашусь, что на одном пикселе может отобразиться тысяча значений, но зато я точно не потеряю данные. То есть не будет искажений, который неизбежно появятся, если я буду отображать одну точку из ста (процеживание) или брать среднее из сотни точек или еще что-то. Есть Qt Charts там лицензия конечно не айс, но вроде тяжелые графики тянул.
Лицензия на Qt Charts не подходит. Единственная библиотека, лицензия которой могла бы подойти это mathGL( да и то там есть ограничения) и производительность у нее хорошая. Но очень мало материалов по ней в сети, а если задаешь вопросы в группе (в google+ по ней есть группа), то во-первых надо на английском, во-вторых очень медленный отклик. Русскоязычных форумов нет.
|
|
|
43
|
Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности
|
: Август 22, 2017, 13:46
|
Так для QOpenGlWidget нужно resizeGL (а не resizeEvent)
Само собой! Оно присутствует в каждом QOpenGlWidget... Но без resizeEvent для окна-контейнера при масштабировании изображение остается прямоугольником в центре, а по краям образуются пустые поля(Это поскольку виджеты элементы сцены, они не масштабируются автоматически). Рисуете каждый график в своем буфере (QImage), а потом шлепаете все буфера в окно. А если с OpenGL то лучше использовать VBO (по сути тоже буфер) Также графики могут иметь разный иасштаб по Y. Стандартные решения: опция "AutoScale" - выбранные графики автоматом вписываются по Y. И также "Custom Scale" число, отображается в списке графиков. Напр если юзер установил Custom Scale = 2, то данный график будет рисоваться в 2 раза больше по Y (чтобы быть соразмеримым с остальными)
Спасибо, покопаю в эту сторону... Если убрать сцену, граф. представление, resizeEvent и просто положить QOpenGLWidget с QLayout на форму, то ведет себя лучше при масштабировании.
|
|
|
44
|
Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности
|
: Август 22, 2017, 13:05
|
Считаю что да, нормально, на то и OpenGL/GPU. А можно и без него, буферирование никто не отменял. А вот затея "каждый график в своем окне" явно нездоровая (и ненужная). Все рисуется в одном окне, но есть список графиков где можно из выбрать, включить, выключить
Отлично! Рисую все графики в одном виджете QOpenGlWidget. Проблема с масштабированием остается. Тяну вправо край формы на 5 см и почти спустя секунду восстанавливается изображение. void chart::resizeEvent(QResizeEvent* pe) { ui->myGraphicsView->resize(width(),height()); w->resize(ui->myGraphicsView->width(), ui->myGraphicsView->height()); }
Здесь w - это QOpenGLWidget. А что такое буферирование? Где почитать?
|
|
|
|
|