我有一个带触摸屏显示器的扶手板,我想显示某个功能的输出vcm_test()。此函数的输出将保存到名为的文件中 test.txt 。现在我能够读取文件 test.txt 的内容,并且仅当它小于50-60行时才显示在我的 qtextEdit 中。而我在 test.txt 中有超过7000行。当我尝试显示7000行时,扶手板继续读取,在读取完成之前不会显示任何内容。是否有任何方法可以在每行之后阅读和显示或每10行说一次。我想在readfile中也使用qProcess,但我不知道如何做到这一点。
connect(ui->readfil, SIGNAL(clicked()), SLOT(readfile()));
connect(ui->VCMon, SIGNAL(clicked()), SLOT(vcm_test()));
connect(ui->Offloaderon, SIGNAL(clicked()), SLOT(offloader_test()));
connect(ui->quitVCM, SIGNAL(clicked()),vcmprocess, SLOT(kill()));
connect(ui->quitoffloader, SIGNAL(clicked()),offloaderprocess, SLOT(kill()));}
MainWindow::~MainWindow(){
delete ui;}
void MainWindow::readfile(){
QString filename="/ftest/test.txt";
QFile file(filename);
if(!file.exists()){
qDebug() << "NO file exists "<<filename;}
else{
qDebug() << filename<<" found...";}
QString line;
ui->textEdit->clear();
if (file.open(QIODevice::ReadOnly | QIODevice::Text)){
QTextStream stream(&file);
while (!stream.atEnd()){
line = stream.readLine();
ui->textEdit->setText(ui->textEdit->toPlainText()+line+"\n");
qDebug() << "line: "<<line;}
}
file.close();}
void MainWindow::vcm_test(){
vcmprocess->start("/ftest/vcm_test_2");}
void MainWindow::offloader_test(){
offloaderprocess->start("/ftest/off_test_2");}
非常感谢任何建议。谢谢。
答案 0 :(得分:2)
您可以在阅读每一行后使用QApplication::processEvents()并将其附加到文字编辑中。但是在使用它时你应该非常小心,我不建议这样做。您还应该考虑使用QTextEdit::Append()而不是setText。
更好的解决方案是在另一个线程中读取文件,并使用信号和插槽发送要附加到QTextEdit的读取数据。