Qt как представлять и редактировать данные по таблицам - PullRequest
0 голосов
/ 26 апреля 2011

Пожалуйста, будьте терпеливы со мной, так как это немного субъективный вопрос, но я после информированного передового опыта в отношении вероятной ситуации.

У меня есть данные, разбитые на несколько (sqlite) таблиц, которыми я являюсьиспользуя Qt для манипулирования.Представление (sql) - это один из способов отображения данных из нескольких таблиц, но я также хочу иметь возможность обновлять значения.Давайте рассмотрим пример из трех таблиц, используя, скажем, дома.Три таблицы связаны между собой внешними ключами, например, таблицей областей, таблицей домов и таблицей мебели.Существует отношение 1: многие, связанные с внешними ключами: Область: Дом, Дом: Мебель Я хотел бы, чтобы элемент пользовательского интерфейса с областями заполнял элемент пользовательского интерфейса дома, который, в свою очередь, заполняет элемент мебельного интерфейса.Под элементом пользовательского интерфейса я имею в виду что-то вроде редактируемого списка или серии lineEdits / Spinners (зависит от типа значения), что-нибудь действительно.

просто для пояснения, я понимаю, как использовать qsqlrelationaltablemodel и qsqlrelationdelegate.Они работают нормально, когда я обновляю одну таблицу, но не обновляют представление (sql), созданное из объединений в нескольких таблицах.Мне нужно решение, которое позволяет мне эффективно работать с данными из нескольких таблиц, включая обновление значений.

Должен ли я делать это с тремя моделями, обновляя фильтр для каждой и используя представление, связанное с каждой моделью?Или, может быть, я мог бы вставить все в одну модель дерева?Или мне стоит заняться созданием пользовательской модели или, возможно, просто не использовать модель / представление и вручную заполнять пользовательский интерфейс?

Я пытался использовать несколько моделей в одной базе данных в качестве эксперимента некоторое время назад, и они не сделали этого.не ведите себя так хорошо, как я надеялся.Это основная причина, по которой я спрашиваю о наилучшей практике.

Большое спасибо за любые советы, которые вы можете предложить.

1 Ответ

0 голосов
/ 28 апреля 2011

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

Мое решение до сих пор состоит в том, чтобы использовать отдельные модели, заполняемые из базы данных вручную. Любое редактирование значений, которое требуется, я делаю вручную.

Кажется, пока работает нормально. Один полезный совет, который я поднял, - это добавление дополнительных данных в другую роль Qt :: UserRole. Для этого я могу хранить соответствующие UUIDS (все мои ключи db - это UUID) с данными в виде дерева в одном столбце и использовать их для получения довольно прямого доступа к базе данных. Дополнительные данные, очевидно, можно поместить в Qt :: UserRole + n, хотя я еще не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...