Название: Вопрос по MVC в Qt Отправлено: Ximik от Март 08, 2009, 15:12 вот такой кусок кода
Код: #include "mainwindow.h" Если расскоментировать первый App::addFile, то filesView показывает строчку файла, всё правильно. Но если навесить App::addFile на кнопку (второй комментарий), то, при нажатии кнопки, ничего не происходит. В App::addFile инфа просто обрабатывается и заносится в QMap<int,QString> App::files, а в модели прописано Код: #include "fileslistmodel.h" Т.е. никаких insertRow не используется. По документации это вроде неправильно, но почему же работает в первом случае? Название: Re: Вопрос по MVC в Qt Отправлено: BRE от Март 08, 2009, 15:20 Т.е. никаких insertRow не используется. По документации это вроде неправильно, но почему же работает в первом случае? Неправильно, да.Первый вариант срабатывает потому, что ты в контструкторе добавляешь имя файла в map. После конструирования объекта (конструктор отработал), Qt начинает рисовать твой view запрашивая информацию у модели (имя файла уже в map), поэтому все нормально. Во втором случае, ты добавил строку в map, а Qt этот факт не сообщил. Название: Re: Вопрос по MVC в Qt Отправлено: Ximik от Март 08, 2009, 19:25 Т.е. никаких insertRow не используется. По документации это вроде неправильно, но почему же работает в первом случае? Неправильно, да.Первый вариант срабатывает потому, что ты в контструкторе добавляешь имя файла в map. После конструирования объекта (конструктор отработал), Qt начинает рисовать твой view запрашивая информацию у модели (имя файла уже в map), поэтому все нормально. Во втором случае, ты добавил строку в map, а Qt этот факт не сообщил. ясно, спасибо. Значит мне оптимально делать так? Код: void MainWindow::addFile() Название: Re: Вопрос по MVC в Qt Отправлено: BRE от Март 08, 2009, 19:32 Т.е. никаких insertRow не используется. По документации это вроде неправильно, но почему же работает в первом случае? Неправильно, да.Первый вариант срабатывает потому, что ты в контструкторе добавляешь имя файла в map. После конструирования объекта (конструктор отработал), Qt начинает рисовать твой view запрашивая информацию у модели (имя файла уже в map), поэтому все нормально. Во втором случае, ты добавил строку в map, а Qt этот факт не сообщил. ясно, спасибо. Значит мне оптимально делать так? Код: void MainWindow::addFile() Название: Re: Вопрос по MVC в Qt Отправлено: Ximik от Март 08, 2009, 20:38 Т.е. никаких insertRow не используется. По документации это вроде неправильно, но почему же работает в первом случае? Неправильно, да.Первый вариант срабатывает потому, что ты в контструкторе добавляешь имя файла в map. После конструирования объекта (конструктор отработал), Qt начинает рисовать твой view запрашивая информацию у модели (имя файла уже в map), поэтому все нормально. Во втором случае, ты добавил строку в map, а Qt этот факт не сообщил. ясно, спасибо. Значит мне оптимально делать так? Код: void MainWindow::addFile() Есть источник данные и функции для их обработки (у меня в App), эти данные используются моделями. Т.к. данные имеют сложные структуру, я не смог разделить их на разные модели (что я вначале и делал), поэтому и приходится делать так. Вообще, наверное, я просто не понимаю идеалогию MVC в Qt (только начал ковырять, до этого простые фронтенды в две кнопки писал), но в том же ActionRecord такие вещи делаются просто и логично (хотя я понимаю, что сравнение неуместное). UPD: Хотя сейчас подумал, что если использовать insertRow, но данные хранить не в моделе, а в App. Сейчас попробую такой вариант. Ещё раз, спасибо |