Название: Удаление выделенных строк в QTableView Отправлено: lokoArt от Февраль 16, 2010, 11:06 Добрый день. Подскажите пожалуйста. У меня есть QTableView а модель QSqlQueryModel. Я хочу чтобы при нажатии на кнопочку удалялись выделенные строки. Я нашёл такой метод selectedIndexes. НО он возваращает список, причём каждый элемент это отдельынй индекс. А как лучше сделать? Может быть работать с QItemModelSelected? Или в классе-наследнике от QTableView переписать selectedIndexes?
Название: Re: Получение данных из QTableView Отправлено: Павел_F. от Февраль 16, 2010, 11:12 Назвали бы тему "QTableView, как удалить выделенные строки", а то назвеание темы ничего общего с вопросом не имеет. Не хорошо.
Код
Примерно так у меня удаляются выделенные строки. Название: Re: Получение данных из QTableView Отправлено: lokoArt от Февраль 16, 2010, 11:21 Назвали бы тему "QTableView, как удалить выделенные строки", а то назвеание темы ничего общего с вопросом не имеет. Не хорошо. Код
Примерно так у меня удаляются выделенные строки. мда... спасибо большое... Не думал, что всё так просто.... Название: Re: Удаление выделенных строк в QTableView Отправлено: asvil от Февраль 16, 2010, 12:58 QModelIndexList indexes = selectionModel()->selectedRows();
if (!indexes.count()) return; if (QMessageBox::question(this, tr("Removing data"), tr("Data will be removed permanently. Continue?"), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No) return; int removed = 0; int count = 1; int start = indexes[0].row(); for (int i = 1; i < indexes.count(); ++i) { if (indexes.at(i - 1).row() != indexes.at(i).row() - 1) { d->model->removeRows(start - removed, count); removed += count; start = indexes.at(i).row(); count = 1; } else { ++count; } } d->model->removeRows(start - removed, count); Название: Re: Получение данных из QTableView Отправлено: lokoArt от Февраль 16, 2010, 14:19 Назвали бы тему "QTableView, как удалить выделенные строки", а то назвеание темы ничего общего с вопросом не имеет. Не хорошо. Код
Примерно так у меня удаляются выделенные строки. ну пример почему-то ваш у меня не заработал((( Название: Re: Удаление выделенных строк в QTableView Отправлено: Павел_F. от Февраль 16, 2010, 14:27 У меня не SQLная модель, функция removeRow моя, переопределенная. Я привел пример как получить номера выделенных строк и как сказать модели что их нужно удалить. А вот конкретную реализацию удаления i-й строки из модели уже писать вам.
Название: Re: Удаление выделенных строк в QTableView Отправлено: lokoArt от Февраль 16, 2010, 15:00 вы предлагаете мне создать класса унаследованный от QSqlQueryModel?
Название: Re: Удаление выделенных строк в QTableView Отправлено: Павел_F. от Февраль 16, 2010, 15:40 Ну, думаю, да. Я наследовался от QAbstractTableModel.
Название: Re: Удаление выделенных строк в QTableView Отправлено: lokoArt от Февраль 18, 2010, 08:07 Ну, думаю, да. Я наследовался от QAbstractTableModel. Спасибо, всё сделал и заработало. А почему ты наследовался от QAbstractItemModel? А не сразу от QSqlQueryModel>Название: Re: Удаление выделенных строк в QTableView Отправлено: Павел_F. от Февраль 18, 2010, 08:27 Я от QAbstractTablemodel наследовался потому что, как я уже говорил, у меня не SQLная модель. К базам данных никакого отношения не имеет. Модель делал для хранения, отображения и редактирования большого кол-ва однотипных настроек для железа. Потом в железо это пишется в двоичном виде. Железо отвечает тоже двоичным видом. Прикручивать базу смысла нет никакого.
Название: Re: Удаление выделенных строк в QTableView Отправлено: lokoArt от Февраль 18, 2010, 08:31 Я от QAbstractTablemodel наследовался потому что, как я уже говорил, у меня не SQLная модель. К базам данных никакого отношения не имеет. Модель делал для хранения, отображения и редактирования большого кол-ва однотипных настроек для железа. Потом в железо это пишется в двоичном виде. Железо отвечает тоже двоичным видом. Прикручивать базу смысла нет никакого. ну спасибо большое... |