本文整理汇总了C++中QSqlRelationalTableModel::relationModel方法的典型用法代码示例。如果您正苦于以下问题:C++ QSqlRelationalTableModel::relationModel方法的具体用法?C++ QSqlRelationalTableModel::relationModel怎么用?C++ QSqlRelationalTableModel::relationModel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSqlRelationalTableModel
的用法示例。
在下文中一共展示了QSqlRelationalTableModel::relationModel方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setModelData
void mySqlRelationalDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
if (!index.isValid())
return;
QSqlRelationalTableModel *sqlModel = qobject_cast<QSqlRelationalTableModel *>(model);
QSortFilterProxyModel* proxyModel = NULL;
if (!sqlModel )
{
proxyModel = qobject_cast<QSortFilterProxyModel *>(model);
if (proxyModel)
sqlModel = qobject_cast<QSqlRelationalTableModel *>(proxyModel->sourceModel());
}
QSqlTableModel *childModel = sqlModel ? sqlModel->relationModel(index.column()) : 0;
QComboBox *combo = qobject_cast<QComboBox *>(editor);
if (!sqlModel || !childModel || !combo) {
QItemDelegate::setModelData(editor, model, index);
return;
}
int currentItem = combo->currentIndex();
int childColIndex = childModel->fieldIndex(sqlModel->relation(index.column()).displayColumn());
int childEditIndex = childModel->fieldIndex(sqlModel->relation(index.column()).indexColumn());
if (proxyModel) {
proxyModel->setData(index, childModel->data(childModel->index(currentItem, childColIndex), Qt::DisplayRole), Qt::DisplayRole);
proxyModel->setData(index, childModel->data(childModel->index(currentItem, childEditIndex), Qt::EditRole), Qt::EditRole);
} else {
sqlModel->setData(index, childModel->data(childModel->index(currentItem, childColIndex), Qt::DisplayRole), Qt::DisplayRole);
sqlModel->setData(index, childModel->data(childModel->index(currentItem, childEditIndex), Qt::EditRole), Qt::EditRole);
}
}
示例2: FillTable
void CarsEdit::FillTable()
{
QString str_oper = "SELECT hm_cars.id, hm_cars.name, hm_cars.speed, hm_fuel.name, hm_fuel.id FROM hm_cars INNER JOIN hm_fuel ON hm_cars.fuel_id = hm_fuel.id;";
QSqlQueryModel * model_Oper = new QSqlQueryModel(0);
model_Oper->setQuery(str_oper);
model_Oper->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Название автомобиля"));
model_Oper->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Максимальная скорость"));
model_Oper->setHeaderData(3, Qt::Horizontal, QObject::trUtf8("Тип топлива"));
ui->tableView->setModel(model_Oper);
ui->tableView->hideColumn(0);
ui->tableView->hideColumn(4);
QSqlRelationalTableModel *comboModel = new QSqlRelationalTableModel(0);
comboModel->setTable("hm_fuel");
int comboIndex = comboModel->fieldIndex("id");
comboModel->setRelation(comboIndex, QSqlRelation("hm_fuel", "id", "name"));
comboModel->select();
QSqlTableModel *comboRelModel = comboModel->relationModel(comboIndex);
ui->comboBox->setModel(comboRelModel);
ui->comboBox->setModelColumn(comboRelModel->fieldIndex("name"));
}
示例3: setModelData
void MySqlRelationDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
if (!index.isValid())
return;
QSqlRelationalTableModel *sqlModel = qobject_cast<QSqlRelationalTableModel *>(model);
QSqlTableModel *childModel = sqlModel ? sqlModel->relationModel(index.column()) : 0;
QComboBox *combo = qobject_cast<QComboBox *>(editor);
if (!sqlModel || !childModel || !combo) {
if (HandbookDialog::m_record.fieldName(index.column()).contains("IS_", Qt::CaseSensitive))
{
QCheckBox * checkBox = qobject_cast<QCheckBox *>(editor);
sqlModel->setData(index, checkBox->isChecked(), Qt::DisplayRole);
sqlModel->setData(index, checkBox->isChecked(), Qt::EditRole);
return;
}
else if (HandbookDialog::m_record.fieldName(index.column()).contains("DATE_", Qt::CaseSensitive))
{
QDateEdit * dateEdit = qobject_cast<QDateEdit *>(editor);
sqlModel->setData(index, dateEdit->date().toString("yyyy-MM-dd"), Qt::DisplayRole);
sqlModel->setData(index, dateEdit->date().toString("yyyy-MM-dd"), Qt::EditRole);
return;
}
else
{
QItemDelegate::setModelData(editor, model, index);
return;
}
}
int currentItem = combo->currentIndex();
int childColIndex = childModel->fieldIndex(sqlModel->relation(index.column()).displayColumn());
int childEditIndex = childModel->fieldIndex(sqlModel->relation(index.column()).indexColumn());
sqlModel->setData(index,
childModel->data(childModel->index(currentItem, childColIndex), Qt::DisplayRole),
Qt::DisplayRole);
sqlModel->setData(index,
childModel->data(childModel->index(currentItem, childEditIndex), Qt::EditRole),
Qt::EditRole);
}
示例4: QWidget
SideBarTask::SideBarTask(QWidget *parent) :
QWidget(parent),
ui(new Ui::sideBarTask)
{
ui->setupUi(this);
layout = new QVBoxLayout();
// task course
courseDropDown = new QComboBox();
// task type
taskType = new TriStateButton("Type: ", "TE","Devoir", "Labo");
// Task name
taskName = new QLineEdit();
taskName->setPlaceholderText("Titre de la tache");
// Task description
description = new QTextEdit();
description->setPlaceholderText("Description");
description->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding);
description->setMinimumHeight(20);
description->setMaximumHeight(100);
// task priority
priority = new TriStateButton("Priorité: ", "Basse", "Moyenne", "Haute");
// task term
termDate = new QDateTimeEdit;
termDate->setCalendarPopup(true);
hasTerm = new QCheckBox("Echéance");
hasTerm->setChecked(false);
connect(hasTerm, SIGNAL(clicked(bool)), termDate, SLOT(setEnabled(bool)) );
termDate->setEnabled(false);
// Task Submit
btnSubmit = new QPushButton();
btnSubmit->setText("Sauver");
btnSubmit->setDefault(false);
btnSubmit->setAutoDefault(true);
QSqlRelationalTableModel *model = Task::getInstance()->getModel();
courseIndex = Task::getInstance()->getCourseIndex();
//SQLRelation set dropdown to search course name in DB
relModel = model->relationModel(courseIndex);
courseDropDown->setModel(relModel);
courseDropDown->setModelColumn(relModel->fieldIndex("name"));
mapper = new QDataWidgetMapper(this);
mapper->setModel(model);
mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
mapper->setItemDelegate(new QSqlRelationalDelegate(this));
// Mapping
mapper->addMapping(taskName, model->fieldIndex("name"));
mapper->addMapping(description, model->fieldIndex("description"));
mapper->addMapping(courseDropDown, courseIndex);
mapper->addMapping(priority, model->fieldIndex("priority"));
mapper->addMapping(taskType, model->fieldIndex("typeId"));
mapper->addMapping(termDate, model->fieldIndex("termDate"));
// Ajout des widgets au layout
layout->addWidget(courseDropDown);
layout->addWidget(taskType);
layout->addSpacing(10);
layout->addWidget(taskName);
layout->addWidget(description);
layout->addSpacing(10);
layout->addWidget(hasTerm);
layout->addWidget(termDate);
layout->addSpacing(10);
layout->addWidget(priority);
layout->addWidget(btnSubmit, QDialogButtonBox::AcceptRole);
layout->addStretch();
connect(btnSubmit, SIGNAL(clicked()), this , SLOT(submitTask()));
mapper->toFirst();
this->setLayout(layout);
}