задрот в различнейших областях
Я создала форму с QTextBrowser и хочу вывести в нее текст из текстового файла.
Как это сделать? Все примеры, что я встречала, не работали с готовыми формами из Designer'a.
Спасибо заранее.
Как это сделать? Все примеры, что я встречала, не работали с готовыми формами из Designer'a.
Спасибо заранее.
но вот проблема, что в текст браузере появляется только текст, вручную напечатанный. Считанный из файла в QString, или просто QString line="текст" не выводится
setHtml для этого использовать нужно.
file.open(filename, QIODevice::readOnly);
ui->textbrowser.setText(file.readAll());
но вот проблема, что в текст браузере появляется только текст, вручную напечатанный. Считанный из файла в QString, или просто QString line="текст" не выводится
Это ненормально, так совершенно не должно быть. Покажите полностью код, который не работает.
И еще: если вы в коде пишете строки с русскими символами, нужно их оборачивать в функцию tr() и вызвать в начале программы QTextCodec::setCodecForTr(QTextCodec::codecForName("ваша кодировка исходников")); Иначе могут быть проблемы с кодировкой на разных системах.
.... ноу. Ничего. Ему еще мое QString::fromLocal8Bit(line) внутри не понравилось, пришлось кодировку убрать (в примере английский текст для начала)
Ri, у меня почти так, отдавать сразу readall правда не пробовала.
QFile inputFile("readme.txt");
inputFile.open(QIODevice::ReadOnly);
QTextStream in(&inputFile);
QString line = in.readAll();
inputFile.close();
ui->textBrowser->setText(QString::fromLocal8Bit(line));
с кодировкой все окай, кодировка у меня вон fromLocal8Bit.
... тоже ничего. пустой qtextbrowser.
qDebug() << QString::fromLocal8Bit(line);
, посмотрите, есть там что-то вообще или нет. А вы уверены, что оно найдет ваш файл без полного пути? Вам open() вообще возращает true?
да даже если не снимать, а прописать QString line="text"; ui->textbrowser->setText(line); не выведет
выдает ошибку - D:\QT\Testirka-build-desktop-Qt_4_8_0_for_Desktop_-_MSVC2008__Qt_SDK_________\..\Testirka\mainwindow.cpp:16: ошибка: C2664: 'QString::fromLocal8Bit' : cannot convert parameter 1 from 'QString' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Хм, если оно у вас выдает такую ошибку, то оно у вас вообще не компилится. Тогда логично: что бы вы там ни писали, у вас запускается просто экзешник, скомпиленный в прошлый успешный раз. Поэтому ничего и не выводит. Поставьте в настройках -> сборка и запуск -> всегда собирать проект перед запуском.
А не компилится оно, потому что вы неправильно используете функцию QString::fromLocal8Bit, ей нужен другой тип аргумента. Она вам не нужна, вам надо перед чтением сделать
in.setCodec(QTextCodec::codecForLocale ());
Да, в конструкторе находится после ui->setupUi(this);
Поставьте в настройках -> сборка и запуск -> всегда собирать проект перед запуском. стоит и давно уже.
кстати, я прописывала полный путь, дай бог память, вроде был D:\QT\Testirka\readme.txt. Результат не поменялся, только он ворнинги на Q и T выводил
Потому что нужно писать "D:\\QT\\Testirka\\readme.txt" или "D:/QT/Testirka/readme.txt", иначе это понимается как экранирование.
Так, еще раз.
1. Убедитесь, что проект у вас действительно компилится успешно, а запускается новая версия. Ну, через qDebug() хотя бы. Он выводит в вывод приложения, да.
2. Убедитесь, что open() возращает true.
3. Убедитесь, что у вас получилось прочитать данные из файла, что они пишутся в консоль (если в консоли неправильная кодировка, ничего страшного, так бывает).
странно, смотрела примеры и без этого у кого-то все окей было.
тогда следующий вопрос - я потом скомпилю проект в exe и нужно, чтобы этот файл лежал с ним в одной папке. как тогда прописывать путь?
И, надеюсь, вы знаете, что для запуска отдельного exe-файла вам нужно будет в его папку положить несколько dll-ок, необходимых ему для работы. Иначе вне Qt Creator он не запустится. И желательно для этих целей компилить в Release-версии, а не в Debug.
насчет dll-ок надо позыркать, потому что у меня exe сам и не запускается. про release знаю, но пока программка далека от релизной версии))
QDir exe_dir = QFileInfo(args.first()).dir();
QString filename = exe_dir.absoluteFilePath("readme.txt");
Идея в том, что первый параметр командной строки всегда должен содержать имя exe-файла.
спасибо, посмотрю и попробую вставить. правда уже не сегодня - нервы с этим qt...