Есть две таблицы: Склад и Ингредиенты, связанные между собой внешним ключом по id
. Организовал ComboBoxDelegate
в QTableView
. ComboBox
берет данные из таблицы Склад столбца Вес. Но тут такой момент, что он отображает полностью весь столбец, а мне нужно, чтобы в каждой строке был выбор "веса" по соответственному айдишнику. На данный момент состояние кода следующее:
ComboBoxDelegate::ComboBoxDelegate(QObject *parent)
{
DelegateModel = new QSqlQueryModel;
DelegateModel->setQuery("SELECT weight FROM sklad, ingridient WHERE
sklad.idsklad=ingridient.iding;");
}
QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const
QStyleOptionViewItem &/* option */, const QModelIndex &/* index */) const
{
QComboBox *editor = new QComboBox(parent);
editor->setModel(DelegateModel);
return editor;
}
Подскажите кто чем может, а то уже моск сломал как это сделать.
QWidget *ComboBoxDelegate::createEditor(QWidget *parent
, const QStyleOptionViewItem &option
, const QModelIndex &index) const {
// Индекс колонки с идентификаторами ингредиентов.
const int iding_col = 0;
const QVariant iding
= index.model()->data(index.model()
->index(index.row(),iding_col));
if(iding.isValid() == false)
return Q_NULLPTR;
QSqlQuery query;
query.prepare(
"SELECT `weight` FROM `sklad`" \
" WHERE `idsklad` = :idsklad");
query.bindValue(":idsklad", iding);
if(query.exec() == false)
return Q_NULLPTR;
QComboBox *editor = new QComboBox(parent);
// QStyleOptionViewItem содержит множество полезных вещей
// для построения корректно выглядящего виджета редактора.
editor->setGeometry(option.rect);
// Каждый раз при создании виджета редактора
// должен создаваться и новый инстанс модели,
// поскольку выборка данных различна для каждой из строк.
// Установка же виджета редактора в качестве родителя модели
// позволяет не заботиться о своевременном удалении последней.
QSqlQueryModel *model = new QSqlQueryModel(editor);
model->setQuery(query);
editor->setModel(model);
return editor;
}
Подскажите кто чем может, а то уже моск сломал как это сделать
Надо править запрос:
SELECT
weight
FROM
sklad,
ingridient
WHERE
sklad.idsklad=ingridient.iding
AND
ingridient.iding = число
А "число" вычислять по QModelIndex
. Я бы в эту сторону копал.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть table на котором есть большая информация, мне нужно написать SELECT * FROM table, так чтобы SELECT возвращал меня информацию на JSON формате, например...
Добрый деньПишу интернет магазин, по одному курсу, который нашел на просторах интернета
Суть такова: Есть форма на сайтеВ форме есть поля: время отхода ко сну время пробуждения Это поля формата hh:mm Нужно занести значение поляей...