2013-05-17 5 views
1

У меня есть доска для рук с сенсорным дисплеем, где я хочу отображать выходные данные определенной функции vcm_test(). Выход этой функции сохраняется в файл с именем test.txt. Теперь я могу прочитать содержимое файла test.txt и отобразить его в моем qtextEdit, если он меньше 50-60 строк. Если у меня есть более 7000 строк в файле test.txt. Когда я пытаюсь отобразить 7000 строк, доска рук продолжает считывать, и ничего не отображается до тех пор, пока чтение не будет завершено. Есть ли способ читать и отображать после каждой строки или говорить каждые 10 строк. Я тоже думал об использовании qProcess в readfile, но я понятия не имею, как я могу это сделать.Нужно отображать в qtextEdit в реальном времени

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");} 

Любой совет действительно оценен. Спасибо.

ответ

2

Вы можете использовать QApplication::processEvents() после прочтения каждой строки и добавления ее к редактированию текста. Но вы должны быть очень осторожны при использовании этого, и я бы не стал рекомендовать это делать. Вы должны также рассмотреть возможность использования QTextEdit::Append() вместо setText.

Лучшее решение - прочитать файл в другом потоке и использовать сигналы и слоты для отправки прочитанных данных, которые вы хотите добавить в свой QTextEdit.

 Смежные вопросы

  • Нет связанных вопросов^_^