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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: циклограмма  (Прочитано 12246 раз)
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« : Июнь 20, 2017, 14:57 »

Собственно есть ли готовое решение?
В принципе в старой программе у меня был собственный виджет который реализовывал циклограмму. Вот думаю может есть готовые решения?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Июнь 20, 2017, 17:43 »

QwtPolar для этого не предназначен?
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #2 : Июнь 21, 2017, 12:37 »

QwtPolar для этого не предназначен?
Полярная система координат не требуется.

По сути циклограмма это таблица с масштабированием и прокруткой (масштаб - показывать на экране от часа до недели из нескольких лет), и блоками которые говорят что объект из соответствующей строки в это время что то делает.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Июнь 21, 2017, 13:15 »

Типичный процесс поиска заканчивающийся банальным "ото брать QPainter и делать" - вряд ли увидим что-то новое, скорее сколько времени пройдет пока "созреет". Ладно, посмотрим
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #4 : Июнь 21, 2017, 13:46 »

Ну задача относительно типовая, в принципе то что у меня есть на QPainter и так хорошо работает. Поиск альтернатив чтобы найти интересные идеи или полностью взять.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Июнь 21, 2017, 14:20 »

Можно глянуть пример вашей циклограммы?
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #6 : Июнь 28, 2017, 10:41 »

как то так
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Июнь 29, 2017, 10:06 »

Посмотрел Qwt на этот счёт. Единственное, что из него мне удалось выжать это модификация barchart.
Код
C++ (Qt)
   QwtPlotMultiBarChart *chart = new QwtPlotMultiBarChart("test chart");
   chart->setStyle(QwtPlotMultiBarChart::Stacked);
   chart->setOrientation(Qt::Horizontal);
 
   for (int i: {0, 2}) {
       QwtColumnSymbol *symbol = new QwtColumnSymbol( QwtColumnSymbol::Box );
       symbol->setPalette( QPalette( Qt::transparent ) );
       chart->setSymbol(i, symbol);
   }
 
   chart->setSamples({{1, 2, 3, 4}, {5, 6, 7, 8}});
   chart->attach(plot_);
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #8 : Июнь 29, 2017, 10:37 »

а просто таблицу взять чем не вариант?
ну зум придется "ручками" сделать - но думаю, что не особо проблемно это,не?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #9 : Июль 03, 2017, 09:32 »

В принципе меня таблица устроит, только ширина ячеек вариативная, от секунд до года. Ну и в масштабе 1 секунда, ячеек будет очень много - не начнет ли эта штука тормозить?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Июль 03, 2017, 10:02 »

Анекдот времен военной кафедры
Цитировать
Одну и ту же работу дали семи солдатам и семи инженерам. Семеро солдат взяли и до обеда сделали. А семь инженеров до вечера обсуждали как сделать лучше - но работа даже не была начата
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #11 : Июль 03, 2017, 10:26 »

Анекдот времен военной кафедры
Цитировать
Одну и ту же работу дали семи солдатам и семи инженерам. Семеро солдат взяли и до обеда сделали. А семь инженеров до вечера обсуждали как сделать лучше - но работа даже не была начата

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

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Июль 03, 2017, 12:39 »

...хоть будет костыль на костыле из говна и палок...
Почему любой самостоятельный код обязательно плох? Что за постыдная философия офисного планктона?  Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #13 : Июль 03, 2017, 13:59 »

...хоть будет костыль на костыле из говна и палок...
Почему любой самостоятельный код обязательно плох? Что за постыдная философия офисного планктона?  Улыбающийся

Потому что в вашем примере солдаты сделают на отъебись (костыль на костыле из ...), а инженеры так что было на века, с расширяемое архитектурой и прочее, прочее
И то, и другое не лучшее решение, нужно искать золотую середину Улыбающийся
Записан

deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #14 : Июль 07, 2017, 11:40 »

Свою старую взял, думаю оптимальнее будет, таблица не совсем удовлетворяет.
собственно, есть строки(с названиями объектов и прочими атрибутами), а есть блоки на циклограмме, допустим каждый блок имеет следующие данные: номер строки, время начала, время конца, цвет(или другие атрибуты).
Циклограмма умеет перемещаться в текущее время(и показывать новые данные) или перемещаться в заданное время. Вся циклограмма в памяти не поместиться(достаточно хранить то что на экране и за краями, максимум месяц).
Как оптимальнее хранить блоки? Имхо отсортировать QList и рисуем начиная от блока у которого конец левее левой части виджета, до блока у которого начало правее. Но поиск по QList не особо быстр, QMap хранит в красно-черном дереве и вставки не особо быстрые. С другой стороны данных за месяц вряд ли будет больше миллиона, и все это не такое и узкое место.

т.е. нужен контейнер в котором хранятся блоки(у каждого блока есть начало и конец) и нужно быстро определить все блоки которые входят в заданный интервал(видны на экране). И второе нужно уметь добавлять блоки в этот контейнер(желательно побыстрее, но не так критично как рисование).
« Последнее редактирование: Июль 07, 2017, 12:04 от deMax » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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