crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как отличить локальные диски?, от cdrom и дисковода
abc
  опции профиля:
сообщение 8.3.2011, 17:08
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


вот я получил QFileInfoList дисков:
QDir::drivers()

Хочу убрать cdrom и дисковод из списка. Как их распознать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Авварон
  опции профиля:
сообщение 8.3.2011, 17:31
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 99
Регистрация: 26.4.2009
Пользователь №: 709

Спасибо сказали: 14 раз(а)




Репутация:   0  


средствами qt - никак. у мобилитианов есть кривой классик для этого дела. Могу рассказать как на разных ос средствами апи делать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 8.3.2011, 17:50
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


сами qt как-то отличают в QFileSystemModel - ставят разные иконки
расскажи, пожалуйста
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 8.3.2011, 18:37
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


посмотрите, пожалуйста, исходники класса QFileIconProvider, лежат в
\src\gui\itemviews
Там в cpp в теле функции QIcon QFileIconProvider::icon(const QFileInfo &info) const
есть запись
UINT type = GetDriveType((wchar_t *)info.absoluteFilePath().utf16());

которая открывает путь к заветному switch по типу drive
не понимаю, откуда берётся функция GetDriveType и типы drive



ВСЁ, последняя правка:
включаем
# include <qt_windows.h>
и работаем так:

uint type = GetDriveType((wchar_t *)info.absoluteFilePath().utf16()); //info - это QFileInfo

switch (type) {
case DRIVE_REMOVABLE:
case DRIVE_FIXED:
case DRIVE_REMOTE:
case DRIVE_CDROM:
case DRIVE_RAMDISK:
case DRIVE_UNKNOWN:
case DRIVE_NO_ROOT_DIR:
default:
}

Работает!! :wub:

Сообщение отредактировал abc - 8.3.2011, 18:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.1.2025, 9:54