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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Список флагов хочу  (Прочитано 2821 раз)
White Owl
Гость
« : Февраль 22, 2012, 23:10 »

Имеются объект. У объекта есть набор бинарных флагов. Флагов много (несколько десятков). У каждого флага есть код и описание.
В базе оно объявлено примерно так:
Код:
create table Objects( ObjectID integer PK, ....)
create table Flags(Code char(4) PK, Description varchar(100))
create table ObjectFlags(ObjectID integer, FlagCode char(4), PK(ObjectID, FlagCode) )
В классе описывающем объект я соответственно имею QStringList flags; поле в котором храню кода тех флагов которые взведены для объекта.
Спрашивается, как это лучше всего (и проще всего) организовать с точки зрения GUI? Чтобы юзер в диалоге видел список всех возможных флагов, и легко мог включать/выключать их а так же сортировать и искать нужный флаг.
Пока я это сделал через QTableWidget с тремя полями - Код, Описание и Да/Нет. Но вся обвязка этого выглядит ужасающе... Мне почему-то кажется что задача более-менее стандартная и для нее уже должны быть велосипеды.
Записан
Silver_swift
Гость
« Ответ #1 : Февраль 24, 2012, 09:12 »

QCheckBox?
Записан
Bepec
Гость
« Ответ #2 : Февраль 24, 2012, 09:18 »

Тут походу SQL моделька Подмигивающий А в них я ещё не путался.
Записан
andrew.k
Гость
« Ответ #3 : Февраль 24, 2012, 10:34 »

Я не понял почему флаги в QStringList и char хранятся.
Было бы проще представить гуй, если бы привел пример объектов и флагов, чтобы понимать, что они означают для человека.
Можно попробовать два листбокса рядом. Слева доступные, справа заданные для выбранного объекта. И их можно перебрасывать туда-сюда, тем самым присваивая объекту.
А почему таблица флагов сделана без ключа?
Записан
White Owl
Гость
« Ответ #4 : Февраль 24, 2012, 17:59 »

Я не понял почему флаги в QStringList и char хранятся.
В char(4) по историческим причинам. В QStringList чтобы не изобретать еще один словарь перекодировки Улыбающийся

Можно попробовать два листбокса рядом. Слева доступные, справа заданные для выбранного объекта. И их можно перебрасывать туда-сюда, тем самым присваивая объекту.
О! Точно. Как же это я забыл о таком простом решении? Спасибо. Так и сделаю.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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