crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Программа для "Умного дома"
casper17
  опции профиля:
сообщение 18.1.2015, 20:11
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 17.1.2015
Пользователь №: 4319

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




Репутация:   0  


Пробую написать программу для отображения информации. Есть центральное устройство, которое принимает данные от других устройств(дом, баня, теплица, гараж) и посылает эти данные по COM порту. Программа считывает эти данные и отображает их.

Слева попробовал сделать меню выбора устройства, под ним кнопка для добавления устройств. Остальную часть программы занимает QStackedWidget в котором будут отображаться информация с датчиков от выбранного устройства из меню слева. На данном этапе есть несколько вопросов:
1. Как можно реализовать так, что бы при добавления нового устройства, создавалось в QStackedWidget новое окно с уже оформленным интерфейсом для данного типа устройства своё(Надписи, данные и т.д.). В будущем хочется реализовать так что бы можно было самому выбирать, какие датчики отображать. Динамически добавлять виджеты и удалять. К примеру нажимаем кнопку добавить датчик и из меню выбираем доступные датчики для данного устройства.
2.Как лучше хранить данные принятые по COM порту? Я думаю хранить в структуре, а потом создавать список этих структур. Добавили новое устройство, для него создалась структура в которую будут заноситься данные. Как это реализовать я не знаю точно..

Подскажите советом как лучше сделать? Какие виджеты использовать, на что смотреть и куда копать?

Думаю что правильнее будет связать как-то добавление устройств в меню с его ID. Потому что может быть несколько устройств одного типа(Теплица).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.1.2015, 20:41
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Напрашивается сделать класс описывающий и устройство и виджет для его управления.
Добавление устройства - создание экземпляра класса (объекта), отображение странички с его настройками вызовом функции класса widget(), которая создаст виджет со всем его содержимым и вернёт указатель.

Ну а данные хранить в виде полей этого класса (вместо отдельной структуры.

Если класс обозвать Device, то список устройств: QList<Device*>

class Device: public QObject
{
Q_OBJECT

    explicit Device(QObject parent=0);
    ~Device(){}
    
    
    QWidget* widget();
    
    void setData1(Type1 value);
    Type1 data1();
    //...
    void setDataN(TypeN value);
    TypeN dataN();


private:
    Type1 _data1;
    // ...
    TypeN _dataN;

}
Наследник QObject, авдруг тебе в будущем сигналы и слоты понадобятся, чтобы тотально проект не пересобирать, лучше уж сразу.

Сообщение отредактировал Litkevich Yuriy - 19.1.2015, 20:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
casper17
  опции профиля:
сообщение 20.1.2015, 12:42
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 17.1.2015
Пользователь №: 4319

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




Репутация:   0  


Правильно ли я понимаю что для каждого типа устройства мы создаем свой класс(Дом, баня, гараж) и они будут храниться в своем списке. С помощью методов
void setData1(Type1 value);
Type1 data1();
//...
void setDataN(TypeN value);
TypeN dataN();

мы записываем и считываем данные из/в
Type1 _data1;
    // ...
TypeN _dataN;


Цитата
отображение странички с его настройками вызовом функции класса widget(), которая создаст виджет со всем его содержимым и вернёт указатель.

Вот тут немножко я не понимаю. Мы в файле Device.cpp описываем эту функцию, создаем там слой форматирования, добавляем виджеты.. Про указатель можно по подробнее :unsure: Спасибо! :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 19.4.2024, 4:56