Russian Qt Forum

Qt => Вопросы новичков => Тема начата: akimov0604 от Октябрь 05, 2015, 14:46



Название: Как реализовать такое ТЗ, на картинке
Отправлено: akimov0604 от Октябрь 05, 2015, 14:46
Есть следующее ТЗ. Нужно реализовать мониторинг датчиков с аккумуляторных батарей и выводить результат на пользовательский интерфейс, подскажите как лучше реализовать данную картинку на виджетах( какой контейнер виджетов применить для отображения? ). Если лучше делать на qml, подскажите с помощью каких элементов лучше реализовать?



Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Bepec от Октябрь 05, 2015, 14:49
Картинки вот нет, а так подсказали бы :D


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: akimov0604 от Октябрь 05, 2015, 15:04
Извиняюсь, картинку добавил.


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Racheengel от Октябрь 05, 2015, 15:08
Ну, либо QTableWidget со своим делегатом, либо полностью свой виджет надо делать...


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Bepec от Октябрь 05, 2015, 15:14
Скорее свой виджет на мой взгляд.

PS похоже на систему для СФС :)


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: akimov0604 от Октябрь 05, 2015, 15:17
Имеется ввиду свой виджет, который будет контейнером для элементов, или виджет вся картинка, или вообще на html делать?


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: akimov0604 от Октябрь 05, 2015, 15:27
А что такое система СФС, может быть есть где-то пример реализации?


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Bepec от Октябрь 05, 2015, 15:39
Система для Специального Фортификационного Сооружения, СФС в сокращении :D  Хотя аккумуляторные комнаты есть много где :)


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: akimov0604 от Октябрь 05, 2015, 16:08
Допустим я хочу сделать контейнер с виджетами. Каждый виджет я буду заполнять картинкой и текстом с датчиков. Какие виджеты лучше использовать для отображения картинки и какой виджет использовать в качестве контейнера?


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: gil9red от Октябрь 05, 2015, 16:23
QGraphicsScene / QGraphicsView?


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: akimov0604 от Октябрь 05, 2015, 16:33
QGraphicsScene / QGraphicsView. Что использовать для виджета с картинкой, а что для контейнера? Можно поподробнее пожалуйста?


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Igors от Октябрь 05, 2015, 16:41
Ну видимо данных тут с гулькин нос. Хоть тыща датчиков будет? А две? Вряд ли. Тогда что-нибудь "пожирнее", где можно покушать плюшек, напр QTableWidget или QTreeWidget. Может и без делегатов прокатит, а если и нет - в них ничего страшного.

Свой виджет с виджетами - ну как-то "не в духе", по смыслу это таблица. QGraphicsScene - ну наверное для фанатов этого класса  :)


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: gil9red от Октябрь 05, 2015, 16:42
QGraphicsScene и является контейнером, на него располагаете объекты -- текст, картинки, свои
Если так нужно, можно на элементе QGraphicsScene разместить другие элементы, и тогда он будет контейнером

А QGraphicsView отображает то, что на сцене


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Racheengel от Октябрь 05, 2015, 17:13
Я бы сделал свой виджет для батарейки на основе QWidget.
А поскольку их кол-во произвольно, пихал бы их в QTableWidget.
Можно, конечно, и QGraphicsScene использовать, но зачем, если все равно у батарейки будет своя отрисовка?
Или нужен будет зум-тягание мышью-эффекты?


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Old от Октябрь 05, 2015, 17:15
Я бы сделал свой виджет для батарейки на основе QWidget.
А поскольку их кол-во произвольно, пихал бы их в QTableWidget.
Тогда зачем виджет, если есть делегаты? :)


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: akimov0604 от Октябрь 05, 2015, 17:21
Про зум-тягание мышкой разговора не было, может будет нужно масштабирование всей картинки.
А как такой виджет сделать? Унаследоваться от класса QWidget и сделать указатель на картинку в нём? Там Картинка должна меняться в зависимости от показаний напряжения и температуры. Становиться жёлтой или красной при недопустимых нагревах или напряжении. И нужно поверх картинки разместить текст с данными, возможно ли это?


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Igors от Октябрь 05, 2015, 17:51
Про зум-тягание мышкой разговора не было, может будет нужно масштабирование всей картинки.
А как такой виджет сделать? Унаследоваться от класса QWidget и сделать указатель на картинку в нём? Там Картинка должна меняться в зависимости от показаний напряжения и температуры. Становиться жёлтой или красной при недопустимых нагревах или напряжении. И нужно поверх картинки разместить текст с данными, возможно ли это?
Вы "кушайте" готовые классы, а не терзайтесь сомнениями. Пока ни с чем не знакомы - будете гадать пока не устанете. Нужны таблицы? Нужны. Есть в Qt таблицы? Есть. Чего ждем?


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Racheengel от Октябрь 05, 2015, 18:23
Я бы сделал свой виджет для батарейки на основе QWidget.
А поскольку их кол-во произвольно, пихал бы их в QTableWidget.
Тогда зачем виджет, если есть делегаты? :)

Ну, я оба варианта предложил, просто смотря как и где эту "батарейку" будут использовать... Если только в таблице - то и делегата хватит, но если ее еще куда-нибудь надо будет встроить, то лучше виджет, имхо.


Название: Re: Как реализовать такое ТЗ, на картинке
Отправлено: Racheengel от Октябрь 05, 2015, 18:25
Про зум-тягание мышкой разговора не было, может будет нужно масштабирование всей картинки.
А как такой виджет сделать? Унаследоваться от класса QWidget и сделать указатель на картинку в нём? Там Картинка должна меняться в зависимости от показаний напряжения и температуры. Становиться жёлтой или красной при недопустимых нагревах или напряжении. И нужно поверх картинки разместить текст с данными, возможно ли это?

Да. переопределяйте paintEvent() и рисуйте там что хотите и как хотите :)

Если масштабирование - то тогда через сцену придется. Но это не избавляет вас от кастомной отрисовки :)