Russian Qt Forum

Qt => Model-View (MV) => Тема начата: andech от Май 21, 2010, 17:42



Название: Не имена файлов в QListView
Отправлено: andech от Май 21, 2010, 17:42
Здравствуйте, подскажите пожалуйста, как сделать, чтобы QListView выводил не полные имена файлов, а, например, в моём случае, имя файла без расширения в конце и время создания.
У меня в QListView выводятся имена звуковых файлов из директории rootDir вот этой простой функцией:
Код:
void MainWindow::Listing()
{  
    dirView.setRootPath(rootDir.absolutePath());
    ui->listView->setModel(&dirView);
    ui->listView->setRootIndex(dirView.index(rootDir.absolutePath()));
}


Название: Re: Не имена файлов в QListView
Отправлено: crossly от Май 21, 2010, 18:15
написать делегат


Название: Re: Не имена файлов в QListView
Отправлено: kibsoft от Май 21, 2010, 18:37
Код:
написать делегат
Зачем? Просто надо наследовать QFileSystemModel и переопределить data ( const QModelIndex &, int ) const для Qt::DisplayRole роли.


Название: Re: Не имена файлов в QListView
Отправлено: lit-uriy от Май 22, 2010, 05:09
>> Просто надо наследовать QFileSystemModel и переопределить data
а по-моему делегат как раз проще будет.
Да и вообще это огород, нужно несколько столбцов - используйте вместо списка таблицу


Название: Re: Не имена файлов в QListView
Отправлено: andech от Май 22, 2010, 16:12
У меня в классе MainWindow определена переменная QDir rootDir, из которой можно вытащить дату создания файла. Каким образом можно, не создавая объект класса MainWindow в делегате, вытащить дату создания из rootDir?
Вот так получается то, что нужно, но выводит оооочень медленно:
Код
C++ (Qt)
void MyDelegate::paint (QPainter *painter, const QStyleOptionViewItem &option,
           const QModelIndex &index) const
{
   MainWindow *tmp = new MainWindow;
   tmp->rootDir.setPath(tmp->settings.value("/Settings/path", "E:/DictoRecs").toString());
   painter->drawText(option.rect, tmp->rootDir.entryInfoList().value(index.row()).baseName()+"\n"+tmp->rootDir.entryInfoList().value(index.row()).suffix()+"\n"+tmp->rootDir.entryInfoList().value(index.row()).created().toString());
}
А таблица не подходит потому, что в ней вся информация выводится в столбцах, а мне нужно именно в несколько строк одним столбцом.


Название: Re: Не имена файлов в QListView
Отправлено: Kolobok от Май 22, 2010, 17:52
Это настолько все неправильно, что я аж растерялся. Советую пойти почитать асистент и посмотреть кутешные примеры.