Название: Сортировка в QTableView и последующее удаление строк Отправлено: SLIP от Декабрь 11, 2008, 01:23 Подскажите как правильно реализовать сабж?
На данный момент пришлось отключить сортировку. Потому что удаление работало некорректно (реализовано с помощью кнопочки удалить с которой связан слот в котором используется модель с EditStrategy OnManualSubmit). Да, в тэйблвью используется модель с EditStrategy OnFieldChange. По сути получается что в слоте удаления нет ни какой инфы о том как там сейчас отсортированы строки и оно всегда думает что по айдишнику. Для примера код этого амого слота: Код: void MainWindow::removeCustomer() { Название: Re: Сортировка в QTableView и последующее удаление строк Отправлено: shade-khv от Декабрь 11, 2008, 03:30 Сломал моск... Я не дока в Qt, но так, навскидку:
Зачем вы создаете QSqlTableModel *model = new QSqlTableModel? Это же "совсем другой человек" и она естественно не знает ничего о ваших сортировках. Почему бы не взять модель ui.tableView->model(); ? Код
Название: Re: Сортировка в QTableView и последующее удаление строк Отправлено: SLIP от Декабрь 12, 2008, 02:15 Да, действительно туплю. Но тогда как правильно в приведенном Вами примере сделать saveAll() ? Я имею в виду без объявления модели...
Название: Re: Сортировка в QTableView и последующее удаление строк Отправлено: shade-khv от Декабрь 12, 2008, 02:59 Вы имеете ввиду submitAll()? Просто везде где у вас model меняйте на ui.tableView->model()
Зачем вы новую модель то создавали? Модель у вас есть (ну где то же хранятся данные, которые во вьюхе отображаются), указатель на нее можно получить через ui.tableView->model() Код
Название: Re: Сортировка в QTableView и последующее удаление строк Отправлено: SLIP от Декабрь 12, 2008, 10:11 Вы имеете ввиду submitAll()? Просто везде где у вас model меняйте на ui.tableView->model() Зачем вы новую модель то создавали? Модель у вас есть (ну где то же хранятся данные, которые во вьюхе отображаются), указатель на нее можно получить через ui.tableView->model() Да, сорри, писал в спешке ночью. Свою ошибку с созданием второй модели я уже понял. Но проблема в том, что на конструкцию ui.tableView->model()->submitAll() компилятор ругается... Название: Re: Сортировка в QTableView и последующее удаление строк Отправлено: shade-khv от Декабрь 12, 2008, 10:32 Во первых, когда компилятор ругается, то он ругается какими то конкретными словами. Хотелось бы это слова знать.
Но вообще, используя телепатию, предполагаю что model() возвращает ссылку на QAbstractItemModel, а submitAll () это метод QSqlTableModel. Поскольку мы точно знаем что используется QSqlTableModel, то явно преобразуем: QSqlTableModel * tmp_model = (QSqlTableModel*)(ui.tableView->model()); tmp_model->submitAll(); Либо так (для краткости): (QSqlTableModel*)(ui.tableView->model())->submitAll(); А вообще сделайте проект в Креэйторе и приложите, а то так можно долго править по мелочи. Название: Re: Сортировка в QTableView и последующее удаление строк Отправлено: SLIP от Декабрь 12, 2008, 15:51 Огромное спасибо. Ваши догадки по поводу ругательства были верны. Вечером попробую предложенное решение. Проект есть. Если будут дальнейшие вопросы - залью его.
|