addi II 0 11 декабря, 2016 Опубликовано 11 декабря, 2016 · Жалоба Здравствуйте! Здравствуйте! Подскажите пожалуйста, как в qt открыть файл в фоновом режиме?, добавить строчку и сохранить? Заранее благодарен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
conan 0 11 декабря, 2016 Опубликовано 11 декабря, 2016 · Жалоба Здравствуйте! Здравствуйте! Подскажите пожалуйста, как в qt открыть файл в фоновом режиме?, добавить строчку и сохранить? Заранее благодарен! Вообще, можно обойтись только средствами C++11. На Qt в простейшем случае можно поступить так: #include <QtCore\QString> #include <QtConcurrent\QtConcurrentRun> #include <QtCore\QFile> void writeString(const QString &fp, const QString &s) { QFile f(fp); if (!f.open(QIODevice::Append)) return; QTextStream stream(&f); stream << s << endl; } int main() { QtConcurrent::run(writeString, QString("C:\\cppdev\\42\\1.txt"), QString("new str")); while (true); } Но если запись происходит регулярно, то простейший вариант может не подойти (ибо может получиться, что очередная запись начнется, до завершения предыдущей и тогда в файле может получиться не то, что нужно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 13 декабря, 2016 Опубликовано 13 декабря, 2016 · Жалоба Спасибо большое! А Вы не подскажите как вызывать writeString? Вот я открываю диалог для выбора файла void MainWindow::on_pushButton_pressed() { str1 = QFileDialog::getOpenFileName(0, "Выбор файла", "", "*.edf"); QFile file1(str1); QString s = str1.section('/',-1); if(str1!="") { ui->textEdit->append("Открыт EDIF"); ui->textEdit->append(str1); ui->lineEdit->setText(s); } } по идее гдето должен быть указатель на считывание файла еще QtConcurrent::run(writeString, QString("C:\\cppdev\\42\\1.txt"), QString("new str")); запускает приложение в фоновом режиме, а мне бы изменения делать в фоновом режиме), оболочка ПО нужна как мин чтобы выбрать файл, и сохранить его в новом месте, и далее преобразование по кнопке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
conan 0 13 декабря, 2016 Опубликовано 13 декабря, 2016 · Жалоба по идее гдето должен быть указатель на считывание файла Не понятно, что это значит QtConcurrent::run(writeString, QString("C:\\cppdev\\42\\1.txt"), QString("new str")); НЕ запускает приложение, а запускает асинхронное (фоновое) выполнение функции writeString Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 14 декабря, 2016 Опубликовано 14 декабря, 2016 · Жалоба #include "mainwindow.h" #include "ui_mainwindow.h" #include <QFileDialog> #include <QtGui> #include <QTextEdit> QString strFilter; QString str1; QString str2; char a[1024]; QString s = "Строка 1"; QString d = "Строка 2"; QString r; #include <QtCore\QString> #include <QtConcurrent\QtConcurrentRun> #include <QtCore\QFile> void writeString(const QString &fp, const QString &s) { QFile f(fp); if (!f.open(QIODevice::Append)) return; QTextStream stream(&f); stream << s << endl; } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_pressed() { str1 = QFileDialog::getOpenFileName(0, "Выбор файла", "", "*.edf"); QFile file1(str1); QString s = str1.section('/',-1); if(str1!="") { ui->textEdit->append("Открыт EDIF"); ui->textEdit->append(str1); ui->lineEdit->setText(s); } QtConcurrent::run(writeString, QString("C:\\cppdev\\42\\1.txt"), QString("new str")); while (true); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
conan 0 14 декабря, 2016 Опубликовано 14 декабря, 2016 · Жалоба Разумеется, while (true) нужно убрать. В примере это было нужно, чтобы программа не завершилась раньше времени Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба Спасибо большое, теперь не виснет, но и запись в C:\\cppdev\\42\\1.txt" "new str" не происходит(.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
conan 0 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба Спасибо большое, теперь не виснет, но и запись в C:\\cppdev\\42\\1.txt" "new str" не происходит(.... Путь c:\cppdev\42 должен существовать. Файл создастся только в существующей папке Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 22 декабря, 2016 Опубликовано 22 декабря, 2016 · Жалоба Путь c:\cppdev\42 должен существовать. Файл создастся только в существующей папке угу, папка и файл соответствующий был сделан Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба спасибо получилось с двойным слэшэм Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 15 января, 2017 Опубликовано 15 января, 2017 · Жалоба Подскажите пожалуйста, необходимо сделать парсинг файла, QFile является достаточным классом для этого? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 15 января, 2017 Опубликовано 15 января, 2017 · Жалоба QTextStream Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 16 января, 2017 Опубликовано 16 января, 2017 · Жалоба Спасибо большое, класс QText получается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 16 января, 2017 Опубликовано 16 января, 2017 · Жалоба Нет, именно QTextStream Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться