Ну, я работал над приложением Qt, где мне нужно отобразить файловую систему, используя QFilesystemModel
Я смог отобразить его, как и ожидалось.
Код:
QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath())
tree->setModel(model);
Это отображает все диски внутри QTreeView. Но мы все знаем по умолчанию, цвет папок, присутствующих внутри каждого диска желтый.
Это то, что я хочу изменить. Есть ли способ в Qt, где можно изменить цвет папки на «Синий»???
Вы можете настроить свой QTreeView через делегат qt. Но если это просто для значка, я думаю, что вы можете переопределить:
class MyQFileSystemModel : public QFileSystemModel {
public:
QVariant data( const QModelIndex& index, int role ) const {
if( role == Qt::DecorationRole ) {
return QVariant(QIcon(QPixmap("icon.png")));
}
return QFileSystemModel::data(index, role);
}
};
Чтобы узнать о делегате, я предлагаю вам изучить примеры: Представитель Spin Box
РЕДАКТИРОВАТЬ: вам необходимо переопределить данные метода из QFileSystemModel, вы должны наследовать от QFileSystemModel.
Затем вы делаете как раньше:
MyQFileSystemModel* model = new MyQFileSystemModel;
model->setRootPath(QDir::currentPath())
tree->setModel(model);
Я бы предположил, что обходной путь должен использовать свой собственный fileIcon.
Qt использует любой значок по умолчанию для текущей платформы. Я предполагаю, что вы на Windows.
Этот вопрос дает некоторые подсказки о том, как реализовать.
(Я только начал изучать Qt сам, кстати!)