Russian Qt Forum
Ноябрь 23, 2024, 09:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: QDir::drives() - как с этим работать?  (Прочитано 15633 раз)
dangreen
Гость
« : Июнь 20, 2011, 14:08 »

привет всем! я новичок по программированию в Qt и я хочу узнать как работать с QDir::drives(), я знаю что функция возвращает тип Qfileinfolist. Так как мне работать с типом данных Qfileinfolist что бы вывести данные о HDD в TextBrowser ?
Записан
Amigo_sa
Гость
« Ответ #1 : Июнь 20, 2011, 14:56 »

Цитировать
QFileInfoList - Synonym for QList<QFileInfo>.
Значит, вы можете просто перебрать элементы в списке.
Код:
QFileInfoList filesInfo = QDir::drives();
foreach (QFileInfo fileInfo, filesInfo)
{
  textBrowser->append(fileInfo.filePath());
}
Записан
dangreen
Гость
« Ответ #2 : Июнь 20, 2011, 15:27 »

спасибо!
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Июнь 20, 2011, 16:23 »

Этот метод работает только в винде, на никсах (в тч маках) тупо возвращает один "/"
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #4 : Июнь 20, 2011, 16:43 »

Этот метод работает только в винде, на никсах (в тч маках) тупо возвращает один "/"
Ну так именнованных дисков в этих системах и нет.
А монтированный в каталог диск этот метод и под Win не вернёт.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Июнь 20, 2011, 17:19 »

буковкой - нет, а разделы примонтированные - есть
на маке вообще есть аналог мукомпутора - /Volumes
Записан
dangreen
Гость
« Ответ #6 : Июнь 20, 2011, 19:42 »

так в винде он будет возвращать буквы?

в Mac OS X я сделал вот что для вывода разделов:

Код:
val.cd("/Volumes/");
    QFileInfoList vals = val.entryInfoList(QDir::Dirs);
    foreach (QFileInfo valu, vals)
    {
     ui->comboBox->addItem(valu.filePath());
    }

есть еще вопрос не по теме: как работать с текст файлами, тоесть как открыть изменить и сохранить?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Июнь 20, 2011, 20:08 »

так в винде он будет возвращать буквы?
да
есть еще вопрос не по теме: как работать с текст файлами, тоесть как открыть изменить и сохранить?
почитай про QFile, QTextStream, QTextEdit...
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Июнь 20, 2011, 20:48 »

в Mac OS X я сделал вот что для вывода разделов:

Код:
val.cd("/Volumes/");
    QFileInfoList vals = val.entryInfoList(QDir::Dirs);
    foreach (QFileInfo valu, vals)
    {
     ui->comboBox->addItem(valu.filePath());
    }
https://gitorious.org/qdrive/qdrive/blobs/master/src/qdriveinfo_mac.cpp#line189
Записан
dangreen
Гость
« Ответ #9 : Июнь 21, 2011, 11:33 »

в Mac OS X я сделал вот что для вывода разделов:

Код:
val.cd("/Volumes/");
    QFileInfoList vals = val.entryInfoList(QDir::Dirs);
    foreach (QFileInfo valu, vals)
    {
     ui->comboBox->addItem(valu.filePath());
    }
https://gitorious.org/qdrive/qdrive/blobs/master/src/qdriveinfo_mac.cpp#line189

скачал сурсы программы, откомпилировал, но программа не запускается, ну думаю и ладно, встроил сурсы в свою программу

в коде написал:
Код:
ui->textBrowser->append(QString::number(QDriveInfo::drives().first().totalSize()));

программа не запускается, иконка тупо скачет (mac os x, когда иконка прыгает значит идет запуск программы ) но окно программы не появляется
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #10 : Июнь 21, 2011, 11:50 »

интересно, у меня работало. вообще там циклиться нечему...
поставьте дебаг печать в цикл, мб реально зацикливается
Записан
dangreen
Гость
« Ответ #11 : Июнь 21, 2011, 11:58 »

я не умею дебагом еще пользоваться)
либо обьясните на пальцах как им пользоваться дибо просто расскажите как встроили сурсы программы в свой код, скорее всего я встроил неправильно
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #12 : Июнь 21, 2011, 12:07 »

вы можете просто тупо написать в своем прошнике include(src.pri) который лежит где-то внутрях проекта, либо скопипастить содержимое src.pri к себе (можно удалить qdrivecontroller и qsystemerror_p, драйвинфо их не использует).
Дебаг - пишите в цикле
Код:
QDebug() << volumeIndex;
И смотрите сколько итераций делает.
Записан
dangreen
Гость
« Ответ #13 : Июнь 21, 2011, 12:18 »

вы можете просто тупо написать в своем прошнике include(src.pri) который лежит где-то внутрях проекта, либо скопипастить содержимое src.pri к себе (можно удалить qdrivecontroller и qsystemerror_p, драйвинфо их не использует).
Дебаг - пишите в цикле
Код:
QDebug() << volumeIndex;
И смотрите сколько итераций делает.

так?
Код:
#-------------------------------------------------
#
# Project created by QtCreator 2011-06-16T22:33:17
#
#-------------------------------------------------
#include(qdrive/qdrive.pro)
QT       += core gui

TARGET = EasyKitAssistent
TEMPLATE = app

DEFINES += QDRIVEINFO_LIBRARY

SOURCES += main.cpp\
    wizard.cpp \

HEADERS  += \
    wizard.h


FORMS    += \
    wizard.ui
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #14 : Июнь 21, 2011, 12:28 »

Код:
-#include(qdrive/qdrive.pro)
+include(qdrive/src/src.pri)
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 23.