comboBox + БД, Как организовать. |
Здравствуйте, гость ( Вход | Регистрация )
comboBox + БД, Как организовать. |
potkin |
21.8.2010, 22:28
Сообщение
#1
|
Студент Группа: Участник Сообщений: 77 Регистрация: 18.6.2010 Пользователь №: 1819 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть таблица "post":
Надо в "comboBox" отобразить поле "name", делаю так:
И надо, чтоб при выборе Итема в "comboBox" (поле "name") выбиралося и соответствующее ему значение "postID". Есть возможности реализовать такое в Qt. Потому что мне напрашивается только одно решение: Какой то целочисленный массив заполнить полем "postID", а в "comboBox" запихнуть поле "name" и связать их, например по порядковому номеру. Заранее спасибо. |
|
|
Алексей1153 |
21.8.2010, 22:34
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Наверное, спасёт вот это
Цитата void QComboBox::setItemData ( int index, const QVariant & value, int role = Qt::UserRole ) Sets the data role for the item on the given index in the combobox to the specified value. See also itemData(). |
|
|
potkin |
21.8.2010, 22:59
Сообщение
#3
|
Студент Группа: Участник Сообщений: 77 Регистрация: 18.6.2010 Пользователь №: 1819 Спасибо сказали: 0 раз(а) Репутация: 0 |
Наверное, спасёт вот это Цитата void QComboBox::setItemData ( int index, const QVariant & value, int role = Qt::UserRole ) Sets the data role for the item on the given index in the combobox to the specified value. See also itemData(). Вручную заполнить ??? То есть вместо ui->comboBox->setModel(model); использовать в цикле: ui->comboBox->setItemData(...); ??? |
|
|
Litkevich Yuriy |
22.8.2010, 5:56
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
potkin, скажи, для чего ты используешь QSqlRelationalTableModel?
Какой то целочисленный массив заполнить полем "postID", а в "comboBox" запихнуть поле "name" и связать их, например по порядковому номеру. и это не понятно, зачем ещё что-то связывать, если есть таблица в БД в которой уже всё связанно?
|
|
|
potkin |
22.8.2010, 15:07
Сообщение
#5
|
Студент Группа: Участник Сообщений: 77 Регистрация: 18.6.2010 Пользователь №: 1819 Спасибо сказали: 0 раз(а) Репутация: 0 |
potkin, скажи, для чего ты используешь QSqlRelationalTableModel? Какой то целочисленный массив заполнить полем "postID", а в "comboBox" запихнуть поле "name" и связать их, например по порядковому номеру. и это не понятно, зачем ещё что-то связывать, если есть таблица в БД в которой уже всё связанно?Ну так в КомбоБокс я заношу поле "name". Пользователь выбирает какой-то из Итемов. Но в конце концов надо получить поле "postID", чтоб занести в БД не поле "name", а его ID-шник. |
|
|
512es |
5.9.2010, 16:19
Сообщение
#6
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
может немного кривовато но я решил этот вопрос через QSqlQueryModel и запрос построенный таким образом:
"SELECT DISTINCT ON (postID) name FROM post;" (постгрес отсортирует результат по postID) обязательное условие это то что postID должен быть autoincrement и номера в таблице должны идти строго по порядку, без разрывов. postID получать по ui->comboBox->currentIndex()+1 вроде работает)) если кто предложит способ получше, буду рад )) |
|
|
Алексей1153 |
5.9.2010, 16:27
Сообщение
#7
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
способ лучше:
"SELECT postID name FROM post;" //поскольку автоинкремент, то есть предполагается уникальный ключ postID получать из Сообщение отредактировал Алексей1153 - 5.9.2010, 19:46 |
|
|
512es |
5.9.2010, 19:27
Сообщение
#8
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
Алексей1153,
звучит заманчиво.. но что то я не видел метода getItemData().. Это разве QCombobox? |
|
|
Алексей1153 |
5.9.2010, 19:45
Сообщение
#9
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
очепятка ) Просто ItemData()
|
|
|
512es |
5.9.2010, 20:22
Сообщение
#10
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
Алексей1153,
Для меня почему то это не работает.. привязываю к комбобоксу QSqlQueryModel с таким запросом: "SELECT name, postID FROM post;" комбо заполняется нормально. остаётся выцепить postID. Но ui->comboBox->itemData(ui->comboBox->currentIndex()) выдаёт всегда QVariant(, ) Сообщение отредактировал 512es - 5.9.2010, 20:23 |
|
|
Текстовая версия | Сейчас: 27.12.2024, 11:51 |