Russian Qt Forum
Июнь 16, 2024, 11:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Странное поведение QSqlTableModel + TableView  (Прочитано 5759 раз)
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« : Декабрь 06, 2012, 21:38 »

Столкнулся с такой бедой. Ниже приведенный код удаляет в одной модели и таблице, а на другой связке говорит что индекс строки неверен.
void LSostav::on_toolButton_26_clicked()
{
    if(ui->ListDelo->currentIndex().isValid())
    {
        int ret = QMessageBox::warning(this, tr("Внимание"),
                                       tr("Данная операция удалит запись из базы данных. Продолжить?"),
                                       QMessageBox::Yes | QMessageBox::No,
                                       QMessageBox::No);
        qDebug()<<ret;
        if(ret==QMessageBox::Yes){
        model_list->removeRow(ui->ListDelo->currentIndex().row()); //а вот тут и засада
}
}}

модели нигде не пересекаются и вьюхи разные. Т.е. один и тот же код в разных слотах работает по разному Обеспокоенный
Что я делаю не так?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #1 : Декабрь 06, 2012, 21:57 »

можно начать с того, что сохранять ui->ListDelo->currentIndex() перед ифом (или в самом условии ифа)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« Ответ #2 : Декабрь 06, 2012, 22:11 »

А что это принципиально поменяет?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #3 : Декабрь 06, 2012, 22:22 »

всякое может быть, попробовать стоит. больше ничего при таком количестве кода сказать невозможно.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Декабрь 07, 2012, 09:49 »

demal, в коде у тебя нюанс - после того как окошко с вопросом пользователю показалось, фокус уходит со списка.
Это может приводить к тому, что текущей строки в списке больше нет, поэтому запоминай номер строки и затем по номеру строки удаляй.
Записан

Юра.
LEO
Гость
« Ответ #5 : Декабрь 07, 2012, 16:26 »

Код:
QModelIndex index = ui->tableView->currentIndex();
    if (!index.isValid())
        return;
    int k = QMessageBox::warning(this, tr("Блааа"),
                                 tr("Бла, бла?"),
                                 QMessageBox::Yes | QMessageBox::No);
    if (k == QMessageBox::No)

    {
        return;
    }

    model->removeRow(index.row());
    model->submitAll();
Делал так, работает
Записан
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« Ответ #6 : Декабрь 08, 2012, 12:08 »

секрет оказался прост. Улыбающийся Причина не работы кода в одном из случаев - заполнение базы. Если модель через setData добавляет строки, но количество заносимых значений меньше чем столбцов в таблице, то удаление потом на этих строках работать не будет. При этом отображаться будет так, как-будто все поля вводятся. Вот так вот  В замешательстве.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Декабрь 08, 2012, 13:18 »

demal, в коде у тебя нюанс - после того как окошко с вопросом пользователю показалось, фокус уходит со списка.
Это может приводить к тому, что текущей строки в списке больше нет, поэтому запоминай номер строки и затем по номеру строки удаляй.
Никак это не может приводить к этому)
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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