Russian Qt Forum
Май 08, 2024, 12:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 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()
В результате на больших объемах данных программа тормозит.
33  Qt / Вопросы новичков / Re: Пустяковый вопрос про названия кнопок в Dialog Button Box : Сентябрь 01, 2017, 07:07
Цитировать
Чтобы интерфейс был локализован при запуке програмы, нужно подгружать файлы переводов qm. Из самого Qt нужно грузить qt_*.qm и qtbase_*.qm. См. https://stackoverflow.com/questions/25850108/translations-of-qmessagebox-not-work-in-qt5-3
Спасибо. Теперь понятно.
34  Qt / Вопросы новичков / Re: Пустяковый вопрос про названия кнопок в Dialog Button Box : Август 31, 2017, 20:04
Понятно, в общем надо разбираться с локализацией.
Спасибо.

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. 
37  Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности : Август 25, 2017, 11:19
поэтому смотрите если у вас в dx (1 пиксель) влезает больше 1-1,5-2-3 точек, рисуете линии Y_MIN Y_MAX иначе обычный график.
Ок.
38  Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности : Август 25, 2017, 09:07
Ну вообще то вы находите для каждого экранного X координаты Y_MIN, Y_MAX, Y_IN, Y_OUT и не надо экран долбать постоянно
Спасибо. А что такое  Y_IN, Y_OUT?
39  Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности : Август 24, 2017, 15:44
200'000 точек в графике, но ведь они на мониторе тупо не поместятся.
В настоящее время я никак не интерполирую значения. Тупо делю ширину на количество точек, получаю шаг (очень маленький), прибавляю его к текущему значению х  и отображаю.  
Соглашусь, что на одном пикселе может отобразиться тысяча значений, но зато я точно не потеряю данные.  То есть не будет искажений, который неизбежно появятся, если я буду отображать одну точку из ста (процеживание) или брать среднее из сотни точек или еще что-то.

Цитировать
Есть Qt Charts там лицензия конечно не айс, но вроде тяжелые графики тянул.
Лицензия на Qt Charts не подходит. Единственная библиотека, лицензия которой могла бы подойти это mathGL( да и то там есть ограничения) и производительность у нее хорошая. Но очень мало  материалов по ней в сети, а если задаешь вопросы в группе (в google+ по ней есть группа), то во-первых надо на английском, во-вторых очень медленный отклик. Русскоязычных форумов нет.
40  Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности : Август 24, 2017, 13:11

Цитировать
LOOOL!  Смеющийся
Ну, например



41  Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности : Август 24, 2017, 07:12
А пчму бы просто Qwt не использовать?
Лицензия не подходит. Нужна LGPL. Да и медленная она...
42  Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности : Август 22, 2017, 14:40
Если бы с самого начала направили в нужное русло, не пришлось бы всякую ерунду городить...
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.
А что такое буферирование? Где почитать?
45  Qt / Вопросы новичков / Re: Масштабирование и прокрутка графиков по отдельности : Август 22, 2017, 12:10
Ничего не понял? Вам графики нужны рядом или друг над другом? И зачем виджеты поверх друг друга рисовать если можно в одном виджете отрисовать?
То есть, считаете, перерисовать 30 графиков с 200 тыс точек в каждом при изменении одного, это нормально?   
Страниц: 1 2 [3] 4

Страница сгенерирована за 0.069 секунд. Запросов: 23.