Здравствуйте, гость ( Вход | Регистрация )
512es | Дата 7.9.2010, 15:55 |
MoPDoBoPoT, Спасибо, попробовал. В самом деле хороший способ дёргать значения по currentIndex() через модель =) |
|
MaratQt | Дата 6.9.2010, 9:25 |
Есть не совсем правильный (точнее совсем не правильный) вариант. Можно с помощью setModelColumn менять текущий столбец на столбец айдишников, брать текущий текст и менять текущий столбец обратно. | |
MoPDoBoPoT | Дата 5.9.2010, 22:43 |
обязательное условие это то что postID должен быть autoincrement и номера в таблице должны идти строго по порядку, без разрывов. Слишком жёсткие ограничения, а то что выделено красным, для многопользовательского режима, выполнимо при определённых настройках сервера (если отключено кэширование значений последовательности). Мне не понятно, в чём, собственно, загвоздка, ведь в заполненой QSqlQueryModel находится вся необходимая информация (поля "name" и "postID" уже "связаны" номером строки в модели). Таким образом, чтобы узнать postID для данного (выбранного) имени, надо сделать примерно следующее:
Если хочется более универсального решения, то можно отнаследоваться от QComboBox и реализовать необходимый функционал: - bool setModel(QAbstractItemModel *model, int idColumn, int visibleColumn) - int currentId() - void currentIdChanged(int id) [signal] - ... |
|
Алексей1153 | Дата 5.9.2010, 21:10 |
512es, а ты как заполняешь комбу то, я не совсем понял | |
512es | Дата 5.9.2010, 20:22 |
Алексей1153, Для меня почему то это не работает.. привязываю к комбобоксу QSqlQueryModel с таким запросом: "SELECT name, postID FROM post;" комбо заполняется нормально. остаётся выцепить postID. Но ui->comboBox->itemData(ui->comboBox->currentIndex()) выдаёт всегда QVariant(, ) |
|
Алексей1153 | Дата 5.9.2010, 19:45 |
очепятка ) Просто ItemData() | |
512es | Дата 5.9.2010, 19:27 |
Алексей1153, звучит заманчиво.. но что то я не видел метода getItemData().. Это разве QCombobox? |
|
Алексей1153 | Дата 5.9.2010, 16:27 |
способ лучше: "SELECT postID name FROM post;" //поскольку автоинкремент, то есть предполагается уникальный ключ postID получать из |
|
512es | Дата 5.9.2010, 16:19 |
может немного кривовато но я решил этот вопрос через QSqlQueryModel и запрос построенный таким образом: "SELECT DISTINCT ON (postID) name FROM post;" (постгрес отсортирует результат по postID) обязательное условие это то что postID должен быть autoincrement и номера в таблице должны идти строго по порядку, без разрывов. postID получать по ui->comboBox->currentIndex()+1 вроде работает)) если кто предложит способ получше, буду рад )) |
|
potkin | Дата 22.8.2010, 15:07 |
potkin, скажи, для чего ты используешь QSqlRelationalTableModel? Какой то целочисленный массив заполнить полем "postID", а в "comboBox" запихнуть поле "name" и связать их, например по порядковому номеру. и это не понятно, зачем ещё что-то связывать, если есть таблица в БД в которой уже всё связанно?Ну так в КомбоБокс я заношу поле "name". Пользователь выбирает какой-то из Итемов. Но в конце концов надо получить поле "postID", чтоб занести в БД не поле "name", а его ID-шник. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 23.4.2024, 23:54 |