crossplatform.ru

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


  Ответ в 2 таблицы, реляционная модель и QComboBox
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
xls Дата 2.2.2011, 13:38
 
Цитата(Rocky @ 2.2.2011, 8:34) *
xls, а можно плиз по-подробнее, до меня не доходит... Как я должен задавать эту QSortFilterProxyModel? Ведь у комбобокса уже есть модель - QSqlRelationalTableModel...

QSortFilterProxyModel задается как модель для 2-го комбо - при этом исходная QSqlRelationalTableModel устанавливается как исходная для прокси-модели через setSourceModel. Это позволяет не перечитывать вторую модель, а просто фильтровать однажды считанные данные...
Rocky Дата 2.2.2011, 8:34
  Пока сделал как abc написал - работает =)

xls, а можно плиз по-подробнее, до меня не доходит... Как я должен задавать эту QSortFilterProxyModel? Ведь у комбобокса уже есть модель - QSqlRelationalTableModel...
xls Дата 1.2.2011, 22:51
 
Цитата(Rocky @ 1.2.2011, 20:23) *
А как мне поставить фильтр на 2-й QComboBox чтобы в нем отображались записи только для тех пар (ID, value), которые являюются текущими в 1-м комбобоксе? Еслиб это были таблицы QTableView - тут все просто. 1-я колонка это и есть внутренние ID таблиц. А как мне узнать, какой ID 1-й таблицы выбран на данный момент в 1-м комбобоксе?

Попробуй setFilterKeyColumn и setFilterFixedString у QSortFilterProxyModel.
abc Дата 1.2.2011, 22:26
  узнать id можно так:

QModelIndex index=comboBox->model()->index(comboBox->currentIndex(),0);
QString id=comboBox->model()->data(index).toString();
Rocky Дата 1.2.2011, 20:23
  Всем привет!

Вот столкнулся с определенными трудностями, и не понимаю как их преодолеть.. Есть 2 таблицы. Они связаны друг с другом через ключ. В 1-й таблице 2 столбца (ID, value), во 2-й - 3 (ID, foreign_ID, value). Данные из первой таблицы добавляю в 1-й QComboBox так:
    QSqlTableModel *pModel2 = new QSqlTableModel();
    pModel2->setTable("CUSTOMERS");
    pModel2->select();
    pModel2->sort(1, Qt::AscendingOrder);
    m_pCustomerCmb->setModel(pModel2);
    m_pCustomerCmb->setModelColumn(1);

2-й QComboBox для 2-й таблицы формирую так:
    QSqlRelationalTableModel *pModel3 = new QSqlRelationalTableModel();
    pModel3->setTable("CUSTOMERS_NAMES");
    pModel3->setRelation(1, QSqlRelation("CUSTOMERS", "CustomerID", "CustomerAddress"));
    pModel3->select();
    pModel3->sort(2, Qt::AscendingOrder);
    m_pCustomerNameCmb->setModel(pModel3);
    m_pCustomerNameCmb->setModelColumn(2);


А как мне поставить фильтр на 2-й QComboBox чтобы в нем отображались записи только для тех пар (ID, value), которые являюются текущими в 1-м комбобоксе? Еслиб это были таблицы QTableView - тут все просто. 1-я колонка это и есть внутренние ID таблиц. А как мне узнать, какой ID 1-й таблицы выбран на данный момент в 1-м комбобоксе?

----
UPD
Потому что в 1-й комбобокс выводится только 2-й столбец 1-й таблицы - т.е. values.... И как в таком случае узнать, что за ID 1-й таблицы соответствует выводимый (QComboBox::currentText(...)) текст в этом 1-м комбобоксе...

Спасибо!
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 5:49