QLabel* codeLabel = new Qlabel;
QFile file("C:\index.txt");
file.open(stderr, QIODevice::WriteOnly);
QByteArray data;
data = file.readAll();
codeLabel->setText("test"+QString(data));
file.close();
Тогда есть только «тест» в QLabel.
Помогите, пожалуйста
Помимо того, что вы должны избегать обратной косой черты в строках в стиле C (c:\\index.txt
), у вас есть проблема со следующей последовательностью:
// vvvvvvvvv
file.open(stderr, QIODevice::WriteOnly);
:
data = file.readAll();
// ^^^^
Что именно ты сделал считать должно было случиться, когда вы открыли файл только для записи, а затем попытались его прочитать? Вам нужно открыть его для чтения, например, с QIODevice::ReadOnly
или же QIODevice::ReadWrite
,
Кроме того, вы должны проверить код возврата всех функций, которые не работают, предоставив вам код возврата. Вы в настоящее время понятия не имеете, является ли file.open()
работал или нет.
Я также не уверен, что вы должны открывать stderr
(что на самом деле является выходным «устройством») для ввода. Вы почти наверняка никогда не получите никаких фактических данных в в этом файловом дескрипторе, возможно, поэтому ваш ввод пуст.
Вы должны сделать шаг назад и спросить какие ты пытаешься заболеть. Например, вы пытаетесь захватить все, что ваш процесс отправляет на стандартную ошибку? Если так, это не сработает.
Если вы просто пытаетесь прочитать index.txt
файл, вы используете неправильную перегрузку. Удалить stderr
параметр в целом:
file.open (QIODevice::ReadOnly);
Если это что-то еще Вы пытаетесь сделать, добавьте это к вопросу.
file.open(stderr, QIODevice::WriteOnly);
это снова закрывает файл и снова открывает поток stderr в режиме только записи
Вы хотите изменить это на
file.open(QIODevice::ReadOnly);
QFile file("C:\index.txt");
Здесь вы пытаетесь открыть файл с именем: C:index.txt
так как '\i'
преобразуется в i
, Вы хотите удвоить обратную косую черту:
QFile file("C:\\index.txt");
Потому что ты читать из файла, который вы открыли только для записи.