【发布时间】:2016-10-04 18:40:04
【问题描述】:
我正在尝试读取一个文件,该文件在各行中包含服务器名称。
我希望文本浏览器中的输出为一行 .*<servername>|<servername>|<servername>.*
我已经尝试直接读取文本浏览器,读取数组并从数组输出。这两种方法都会导致文本浏览器在自己的行上显示每个项目。我希望所有输出都在同一行。也许是 append 方法或 .readLine 方法导致了它?
这是我的代码:
void MainWindow::on_pushButton_clicked()
{
QString myfile=QFileDialog::getOpenFileName(
this,
tr("Open File"),
"C://",
"Text File (*.txt)"
);
QFile file(myfile);
if(!file.open(QIODevice::ReadOnly))
QMessageBox::information(0,"info",file.errorString());
QTextStream in(&file);
ui->textBrowser->append(".*");
while (!file.atEnd())
{
QString line = file.readLine();
ui->textBrowser->append(line);
ui->textBrowser->append("|");
}
file.close();
}
【问题讨论】:
-
在 GUI 线程中运行的插槽中执行文件 I/O 是一个可怕的想法。
-
很酷,对批评那些试图学习而不提供任何替代方案的人很有帮助。
-
你也将我的问题标记为重复,但实际上它不是。我问的是使用 textBrowser,你链接了一篇关于 QPlainTextEdit 的文章
-
@Kuba Ober 这不是重复的。请重新打开。
-
在 GUI 线程中执行文件 I/O 的“替代方案”:只是不要在 GUI 线程中执行,我希望这很清楚。在其他线程中有很多人这样做,无论如何,这在这个特定问题中是题外话。