Russian Qt Forum
Ноябрь 24, 2024, 13:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: QSqlRelationalTableModel и QComboBox  (Прочитано 20765 раз)
Dr.Vlad
Гость
« Ответ #15 : Апрель 23, 2010, 23:26 »

Предположим, что это фантазия автора. Где он сами записи хранит? если в comboBox это одно, если в базе, то совсем другое.
Записан
alexman
Гость
« Ответ #16 : Апрель 24, 2010, 07:08 »

Какая разница где хранит? Переопределяй QItemDelegate и показывай любые виджеты. Ну а данные для кобо блкса из модели берем!
Записан
vpara
Гость
« Ответ #17 : Апрель 25, 2010, 22:15 »

Если итнересно я могу выложить пожект ... с кодом пере глазами думаю всем будет монятнее что и как задумано
Записан
vpara
Гость
« Ответ #18 : Апрель 25, 2010, 22:17 »

Какая разница где хранит? Переопределяй QItemDelegate и показывай любые виджеты. Ну а данные для кобо блкса из модели берем!

а как модель обновить?
Записан
alexman
Гость
« Ответ #19 : Апрель 26, 2010, 07:53 »

Какая разница где хранит? Переопределяй QItemDelegate и показывай любые виджеты. Ну а данные для кобо блкса из модели берем!
а как модель обновить?
Код:
bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )
void QAbstractItemModel::reset ()
Еще могут пригодиться
Код:
void QAbstractItemModel::layoutChanged ()
void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )
Записан
vpara
Гость
« Ответ #20 : Апрель 26, 2010, 12:42 »

Понять что с QSqlRelationalTableModel у меня не выйдет обновить занченя? ... переделать в QSqlTableModel?
Записан
crossly
Гость
« Ответ #21 : Апрель 26, 2010, 14:01 »

почему не выйдет?? submit().... select()
Записан
vpara
Гость
« Ответ #22 : Апрель 26, 2010, 14:12 »

почему не выйдет?? submit().... select()

Так я открываю диалог для редактирования ТАБЛИЦЫ2:
Код:
void FamilyBudget::openArticleForm()
{
    ArticleWindow form1(this);
    form1.resize(400, 300);
    form1.exec();    
    updateLinesPanel();
}

После того как я закончил работать с диалогом я закрываю и срабатывает updateLinesPanel();

Код:
void FamilyBudget::updateLinesPanel()
{
    linesModel->submit();
    linesModel->select();
    linesView->setModel(linesModel);
}

И все равно выбрать только что добавлене значения не могу ...
« Последнее редактирование: Апрель 26, 2010, 14:14 от vpara » Записан
crossly
Гость
« Ответ #23 : Апрель 26, 2010, 15:08 »

а если обновить ещё и связанную модель??
Записан
vpara
Гость
« Ответ #24 : Апрель 26, 2010, 15:16 »

если я правильно понял я обновил так:

Код:
void ArticleWindow::done(int result)
{
    articleModel->submit();
    articleModel->select();
    //articleView->setModel(articleModel);
    QDialog::done(result);
}

срабатывает когда закрываю диалог ... но толку 0
Записан
vpara
Гость
« Ответ #25 : Апрель 26, 2010, 15:17 »

я на связи и всегда жду свежих идей ... если нужно могу прожек выложить!
Записан
crossly
Гость
« Ответ #26 : Апрель 26, 2010, 16:44 »

а если добавить
Код:
articleModel->relationModel(int column)->select();
Записан
vpara
Гость
« Ответ #27 : Апрель 26, 2010, 16:50 »

а если добавить
Код:
articleModel->relationModel(int column)->select();

УРААААААААААААААААААААААААА!!!!!!!!!!!!! получилось ... Огромное вам человеческое спасибо!  Улыбающийся

только я сделал
Код:
linesModel->relationModel(2)->select();
так как linesModel u menea na glavnoi forme .... Спасибо!
« Последнее редактирование: Апрель 26, 2010, 16:52 от vpara » Записан
DrHaos
Гость
« Ответ #28 : Октябрь 11, 2010, 23:35 »

У меня ситуация схожая, открываю для редактирования строку главной таблицы (все поля таблицы привязаны к виджетам на форме через QDataWidgetMapper) затем добавляю в связанную таблицу строку, в QComboBox изменения отображаются а в гланой таблице сохранить не  могу, как обновить индексы?
 
Код:
void MMalc::editAgreement()
{
stackedWidget->setCurrentIndex(1);
    QModelIndex index = tableViewMagazine->currentIndex();
    if (!index.isValid())
        return;
mapper->setCurrentIndex(index.row());
}

<....>


void MMalc::addDepartment()
{
if (stackedDepart->currentIndex()) {
stackedDepart->setCurrentIndex(0);
buttonAddDepar->setText(tr("Save"));
buttonSave->setEnabled(FALSE);
int row = departmentModel->rowCount();
departmentModel->insertRow(row);
mapperDep->setCurrentIndex(row);
lineEditDepartment->setFocus();
} else {
stackedDepart->setCurrentIndex(1);
buttonAddDepar->setText(tr("Add"));
buttonSave->setEnabled(TRUE);
mapperDep->submit();
int row = departmentModel->rowCount();
comboBoxDepartment->setCurrentIndex(--row);
}
}

Записан
crossly
Гость
« Ответ #29 : Октябрь 12, 2010, 11:42 »

так же как указано выше...
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.148 секунд. Запросов: 21.