crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QComboBox и sqlQueryModel, получить отличный от отображаемого столбца , столбец модели
Andrewshkovskii
  опции профиля:
сообщение 8.7.2011, 16:16
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Есть у меня Qcombobox, у которого стоит модель QSqlQueryModel (select id, name ..) .
Соответственно отображается name, но при определенных событиях надо получать id выбранного name.
Как это сделать по-красивее?
Вариант с выборкой айдишника по тексту из базы - не красиво.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.7.2011, 16:37
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Andrewshkovskii @ 8.7.2011, 19:16) *
Вариант с выборкой айдишника по тексту из базы
а зачем из базы, id уже у тебя в модели, из неё и бери.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 8.7.2011, 16:47
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


вот как мне взять то? Мне нужно понять что выбрано комбобоксом было относительно модели. Есть вариант тупо по индексу смотреть:
    def sel_id(self, *args, **kwargs) :
        print args[0], kwargs
        i = self.form.ui.login_combobox.currentIndex()
        j = self.form.ui.login_combobox.model().record(i).value(1).toInt()
        print 'j', j

Но эт не совсем годиться, это костыль..
Ну тоесть в нормальном варианте вот так :
    def get_selected_user_id(self, *args) :
        return self.users_model.record(self.form.ui.login_combobox.currentIndex()).value(1).toInt()[0]

Но это работает только потому что порядок строк в комбобоксе соответствует порядку строк в модели. Если будет разная сортировка - то беда.

Сообщение отредактировал Andrewshkovskii - 8.7.2011, 17:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.7.2011, 17:03
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


По другому ни как
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 8.7.2011, 17:05
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Да?это печально. вообще мне кажется что слишком мало Qt отсыпает методов для работы с БД на основе её компонентов. SQL модуль, в частности модели, надо дописывать или писать обертки. Я кое-что написал, но это так - для личного пользования.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 9.7.2011, 17:18
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Ну я когда мне надо было создавал массив с ID, если пересортировываешь список в ComboBox то пересортировываешь его в массиве. В нулевом элементе массива у меня хранился его размер. По скорости работы и красивости кода меня вполне устраивало.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 11.7.2011, 12:12
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Предлагаю вариант - если вы используете комбо с моделью - используйте QCompleter :
1. Это будет удобно пользователю
2. Это будет удобно вам - искать модельный индекс выбранных элементов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 15:35