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

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

Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: Совет по дизайну. Две модели для данных  (Прочитано 31959 раз)
vizir.vs
Гость
« Ответ #15 : Сентябрь 22, 2014, 15:14 »

Модель ни чего не знает о количестве столбцов, будет ли это таблица, или график, или еще что-нибудь. У нее есть данные, а вьювер эти данные уже отображает. В твоем случае, например, у тебя есть массив из 32 чисел. Хекс должен этот массив интерпретировать как таблица из 16 столбоцов, а бин - как таблица из 8 столбцов. Модель на таблицу ни как не влияет. Может ты захочешь сделать еще один вьювер хекс-бин, который будет отображать в виде графика.

Ну так вот этот-то метод в модели http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#columnCount , а не во view.
Можно немного поподробнее, пжлста, как мне объединить эти 2 модели в одну.

Храни в моделях указатель на данные.
Записан
UVV
Гость
« Ответ #16 : Сентябрь 22, 2014, 15:19 »

Ну так вот этот-то метод в модели http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#columnCount , а не во view.
Можно немного поподробнее, пжлста, как мне объединить эти 2 модели в одну.

Храни в моделях указатель на данные.

Спасибо, кэп. Я именно так и делаю, о чём написал уже выше по треду. Вопрос был в том, что если данные меняются в одной модели, как уведомить об этом другую модель? Если архитектура, как заметили выше, не совсем правильная, то как объединить эти две модели в одну, учитывая, что количество строк/столбцов разное?
Записан
vizir.vs
Гость
« Ответ #17 : Сентябрь 22, 2014, 15:40 »

Вариант такой. Для функции data указывать роль. Создай две пользовательских роли hex и bin. В зависимости от роли будут и данные.
Записан
UVV
Гость
« Ответ #18 : Сентябрь 22, 2014, 16:03 »

Вариант такой. Для функции data указывать роль. Создай две пользовательских роли hex и bin. В зависимости от роли будут и данные.
Окей, с data разобрались. Чё делать с row/columnCount?
Записан
Bepec
Гость
« Ответ #19 : Сентябрь 22, 2014, 17:15 »

Делегат отрисовывает ВСЁ как хочет. И никто ему не указ. Вообще.

Если уж так хотите сделать всё в модели - тупо сделайте в ней 2 режима HEX и BIN.
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #20 : Сентябрь 22, 2014, 18:21 »

Делегат отрисовывает ВСЁ как хочет. И никто ему не указ. Вообще.

Если уж так хотите сделать всё в модели - тупо сделайте в ней 2 режима HEX и BIN.
А как все начиналось... "неправильная архитектура"... а закончилось все как всегда - сделайте тупо. Улыбающийся

Вячеслав, все вы нормально делали, научите хранилище информировать модели о своем изменении (отсылкой сигнала), а в моделях ловите этот сигнал и обновляйте, только изменившиеся в хранилище данные.
Записан
Bepec
Гость
« Ответ #21 : Сентябрь 22, 2014, 18:40 »

Old я не понял вас. Какой сигнал, какие изменения в хранилище Улыбающийся

А делать "тупо" нужно всегда, когда нужно сделать быстро.
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #22 : Сентябрь 22, 2014, 18:48 »

Old я не понял вас. Какой сигнал, какие изменения в хранилище Улыбающийся
Это потому, что вы ни секунды не думали над тем, о чем спрашивал ТС.

А делать "тупо" нужно всегда, когда нужно сделать быстро.
То что вы всегда делаете тупо, не означает что так надо делать.
К тому же я не увидел, где ТС просит вас это сделать быстро. Наоборот, он спрашивал как это сделать хорошо.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #23 : Сентябрь 22, 2014, 20:27 »

Цитировать
А делать "тупо" нужно всегда, когда нужно сделать быстро.
Аха..) Вот после таких заявления, я начинаю лучше понимать пословицы типа:
"Я не настолько богат, чтобы тратить деньги на дещёвые вещи")
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Bepec
Гость
« Ответ #24 : Сентябрь 22, 2014, 21:28 »

Главная мудрость пословиц - они друг другу противоречат, если не знали Веселый Ибо нет золотой середины.

Но когда нужно сделать за день - нет времени расписывать архитектуру.

Я подумал. И вижу что у вас появилось хранилище. Откуда - я хз Веселый У ТСса 2 модели. Мб сначала предложить создать отдельное хранилище? А то вы как фокусник - создали хранилище из ниоткуда Улыбающийся

Вы предлагаете вынести хранилище из модели. НО... Но модель это и есть хранилище. Вынести функционал - это тоже костыль Веселый

А так то, для внимательных - я предложил 2 варианта. Красиво и медленно или тупо и быстро.
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #25 : Сентябрь 22, 2014, 21:33 »

2Верес. Перечитайте первое сообщение. У ТС есть хранилище (данные) и есть две модели.
Может вы и подумали, только вряд ли поняли. Зато постов важных написали не мало.
Записан
Bepec
Гость
« Ответ #26 : Сентябрь 22, 2014, 21:56 »

Почитайте сами. У него есть ДАННЫЕ. Над которыми 2(две) модели.
Нет у него хранилища. У него сырые данные. Было бы хранилище, вот тогда он бы поступил по вашему совету Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #27 : Сентябрь 22, 2014, 21:59 »

QByteArray это простое хранилище данных, к нему легко можно добавить сигнал о модификации.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #28 : Сентябрь 22, 2014, 22:13 »

Цитировать
Главная мудрость пословиц - они друг другу противоречат, если не знали Ибо нет золотой середины.
Что там друг-другу противоречит?
Я уж молчу о том, что ситуации, когда "пятки горят" и надо за один день сделать абы как - это подход реальных "find/replace/if-else/case" профессионалов) Это, конечно, к крайностям не относится)     
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Bepec
Гость
« Ответ #29 : Сентябрь 22, 2014, 22:56 »

Давайте реализуйте мне за день программу сложности "я нихрена в этом не разбираюсь в первый раз вижу но делать надо". Я посмотрю на вашу архитектуру Улыбающийся
Архитектура в первую очередь строится на знании предмета. А когда форс мажор, тут какие знания - тут лишь бы работало и быстрее.

PS футуристичные рассказы как люди писали программы с превосходной архитектурой за день можете не приводить - единственный в них смысл в том, что эти люди знали предмет и имели заготовки по нему Улыбающийся
Записан
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 
Перейти в:  


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