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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как правильнее создать пользовательскую форму?  (Прочитано 2946 раз)
PavelVX
Гость
« : Декабрь 13, 2010, 09:11 »

Перехожу с МС Аксеса на Qt и очень многое непривычно. Посоветуйте, как правильно сделать следующую форму(в общих чертах хотя бы).
Вводная: есть таблица - таблица_заказы. Есть форма - форма_заказы, в которой она будет редактироваться. Есть связанная с ней форма - форма_заказ_товары, в которой будет отображаться содержимое заказа(данные обновляются при смене строки заказа в форме форма_заказы).
Непонятки в следующем:
1. Поскольку форма_заказы должна быть редактируемой, в ней несколько внешних ключей(клиенты, статус обработки заказа), то модель создается на основе QSqlRelationalTableModel, прописываем отношения и создаем делегаты. Но как сделать сортировку по двум полям(order by date, naim) для данной модели? Причем naim это значение внешнего ключа kod_clienta к этой таблице?
Может в данном случае сделать форму на другой модели?
2. Если включить QTableView->setSortingEnabled(true); то у колоночек появляются треугольнички сортировок. Но сортирует оно не совсем правильно(возможно сортировка берется с постгре сервака/сортировка учитывает только цифры/буквы, пробел не учитывает Грустный). Можно ли как-то переопределить параметры сортировки для приложения?
3. Как-то можно инициировать событие before_update для QComboBox? Типа если все значения в заказе валидны, то только тогда разрешать менять значения в комбобоксе. Или данные действия нужно делать для модели, просто проверяя какое поле изменяют?
4. Раскраска. Как раскрасить определенные поля/строки в QTableView?
Советы приветствуются, примеры рассматриваются Улыбающийся.
Записан
Whiplash
Гость
« Ответ #1 : Декабрь 13, 2010, 10:10 »

Всмысле, как сортировку сделать? Ты же написал - order by date, naim. Делаешь запросом да и всё. Вообще, нафиг тебе эта QSqlRelationTableModel? Делай лучше всё на QSqlQueryModel - она хоть более-менее прозрачная, в плане sql-запроса имею ввиду. Все вопросы с сортировкой отпадут.
Чтобы раскрасить QTableView нужно наследовать модель и переопределять там метод data.
Записан
PavelVX
Гость
« Ответ #2 : Декабрь 13, 2010, 10:23 »

А QSqlQueryModel я смогу редактировать находу? Или придется все делать через запросы?
Записан
Whiplash
Гость
« Ответ #3 : Декабрь 13, 2010, 18:16 »

А QSqlQueryModel я смогу редактировать находу? Или придется все делать через запросы?

Я думаю, что лучше "делать через запросы", чем "редактировать на ходу". Более того, я категорически против подхода "редактировать на ходу".
Записан
PavelVX
Гость
« Ответ #4 : Январь 17, 2011, 13:50 »

Сорри, но возвращаюсь к данной теме. Но толи лыжи не едут, то ли как-то сильно непривычно.
Создал тестовый проект под win платформой. Qt 4.7
Под линем установил Qt 4.5.
Подсовываю этот проект под линь, компилирует, запускает, но в QSqlRelationTableModel не понимает таблиц написанных кирилицей в разном регистре(ТаблицаКлиентов). Крутил, вертел, не могу подцепить никак. Причем, если заменить на QSqlQueryModel и прописать "select * from ТаблицаКлиентов" то все селектит. Никто не подскажет, в чем может быть дело? Прописал QTextCodec::codecForName("CP1251") под линем.
Проблема оказалась хуже, чем я думал: Qt не понимает названий таблиц в разном регистре вообще Грустный. Даже на латинице Грустный.
Whiplash, а как в QSqlQueryModel делегаты прикручивать? И вообще редактировать?
« Последнее редактирование: Январь 25, 2011, 12:41 от PavelVX » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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