Название: Вопросы по QTreeView Отправлено: Jhonny от Май 10, 2009, 13:27 Здравствуйте.
Значит есть QTreeView, использующий модель QStandardItemModel; также используется QSortFilterProxyModel для сортировки. 1) как сделать, чтобы при изменении размера окна все колонки сужались/расширялись? Установка Stretch в resizeMode header'a не помогает, хотя это работает для QTreeWidget. 2) данные в каждый item считываются из своего файла, затем по щелчку на item'e нужно обратиться к соответствующему файлу. Как связать файл с итемом? Пока записываю имя файла в дополнительную колонку, которую затем прячу. Обращение сделал вот так: connect(inMail, SIGNAL(clicked(QModelIndex)), this, SLOT(clicked(QModelIndex))); //inMail это QTreeView void Mail::clicked(const QModelIndex &index) { QDir dir = QDir(qApp->applicationDirPath()); QStandardItem *item = model->itemFromIndex(index); QString filename = model->data(model->index(index.row(), 3)).toString(); //... } Это работает, но при пересортировке не происходит обновления модели, т.е. визуально дерево изменилось, а итемы остались на своих местах. Что с этим делать? Название: Re: Вопросы по QTreeView Отправлено: EhTemka от Май 11, 2009, 21:34 По поводу 1-го точно не знаю.
А по поводу 2-го, связать файл с итемом можно разными способами. Всё зависит от того, зачем это нужно. Так как это делаете Вы, тоже можно. Только нужно учитывать то, что используется QSortFilterProxyModel. Индекс, который передается в clicked(const QModelIndex &) - это индекс прокси модели. Чтобы получить нужный вам индекс в модели данных, используйте функцию QSortFilterProxyModel::mapToSource. Вот так: Код
|