Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2011, 12:07   #1
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
Радость Инициализация QFile и QTextStream

Всем привет!

Меня интересует такой вопрос
Знаю что глупый, не ругайтесь сильно

Нужно приинициализировать объект класса QFile
Во всех источниках это делается так:
Цитата:
QFile file("file.txt");
Хорошо, но если нам нужно затем реинициализировать этот файл?
Как это записать?

file = QFile("file.txt") не работает
file("file.txt") - естественно, тоже
file.setFileName - не предлагать

То же касается и QTextStream

И что, неужели никак?
Lindemann66 вне форума Ответить с цитированием
Старый 29.08.2011, 14:07   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

опять ты со своими детскими вопросами. я же уже говорил тебе, используй assistant.

Код:
QFile file("some_file");
file.open(...);
....
file.close();

file.setFileName("another_file");
file.open(...);
....
file.close();
и почему setFileName то не предлагать? operator= у QFile то private.
не хочешь setFileName - работай с QFile через указатель
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 29.08.2011 в 14:17.
pproger вне форума Ответить с цитированием
Старый 29.08.2011, 14:48   #3
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
я же уже говорил тебе, используй assistant.
Если бы использовал и нашёл, не писал бы

Цитата:
Сообщение от pproger Посмотреть сообщение
и почему setFileName то не предлагать?
Потому что у QFile он есть, хорошо
А, допустим, у QTextStream НЕТУ!

У меня такая ситуация
Код:
//класс лога
class LogFile {
private:
    QTextStream stream;

public:
    LogFile();
    ~LogFile();

    void Save(QString text);
};

LogFile::LogFile() {
    QFile file("log.log");
    //file.setFileName("log.log");
    //создать и открыть на дозапись
    if (!file.open(QIODevice::Append | QIODevice::Text)) {
        QMessageBox::warning(0, QObject::tr("File error"), QObject::tr("Log file create error!"));
    }
    //QTextStream stream(&file);
    //ВОТ ТУТ как-то надо проинициализировать поток
}

LogFile::~LogFile() {
    file.close();
}

void LogFile::Save(QString text) {
    //а ВОТ ТУТ как-то записать в него текст
    stream << text;   
}
Я думаю как - создам поток, и буду в него писать
Чтобы каждый раз, когда хочу что-то записать, не создавать поток
НО ПОТОК не инициализируется так, как я хочу!
Lindemann66 вне форума Ответить с цитированием
Старый 29.08.2011, 14:49   #4
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
опять ты со своими детскими вопросами.
Если тебе так не прёт отвечать на мои детские вопросы, я разрешаю тебе их игнорировать
Я здесь никого не заставляю
Просто мне интересно получить ответы
И получать я их буду так, как мне удобней
Lindemann66 вне форума Ответить с цитированием
Старый 29.08.2011, 14:50   #5
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

Если у меня кто-то спрашивает что-то, что я знаю - я отвечу, и не буду говорить
Цитата:
Ёмоё, да я это знаю. я это ещё в дет саду понял!
Какая разница, человек то не в курсе!
Вообще, никогда не понимал людей, которые так как ты отвечают

Последний раз редактировалось Lindemann66; 29.08.2011 в 14:53.
Lindemann66 вне форума Ответить с цитированием
Старый 29.08.2011, 16:02   #6
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

Код:
QFile file; // вначале можно не указывать файл
file.setFileName("file1.txt"); // указываем файл
file.open(QIODevice::WriteOnly); // открываем его для записи
QTextStream stream; // создаём stream... тоже можно сразу не указывать, а указать потом
stream.setDevice(&file); // указываем, что работать будем с нашим файлом
stream << "My Text"; // записываем
file.close(); // закрываем файл
file.setFileName("file2.txt"); // указываем другое имя файла
file.open(QIODevice::WriteOnly); // опять открываем для записи, но уже другой файл
stream << "Text2"; // опять записываем
file.close(); // и закрываем его
Тема закрыта
Lindemann66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
инициализация из файла CodeNOT Общие вопросы C/C++ 0 18.12.2010 20:32
Инициализация Aleksey1989 Общие вопросы Delphi 10 11.09.2010 21:50
Меню, инициализация Krumyura Общие вопросы C/C++ 4 22.03.2010 18:14
Ошибка инициализация Krumyura Общие вопросы C/C++ 2 22.03.2010 14:08
Инициализация Krumyura Общие вопросы C/C++ 5 20.03.2010 23:37