【问题标题】:Need to display in qtextEdit real time需要在qtextEdit中实时显示
【发布时间】:2013-05-17 12:54:24
【问题描述】:

我有一块带有触摸屏显示器的臂板,我想在其中显示某个函数 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");}

非常感谢任何建议。谢谢。

【问题讨论】:

    标签: qt qprocess qtextedit qtembedded


    【解决方案1】:

    您可以在阅读每一行并将其附加到您的文本编辑后使用QApplication::processEvents()。但是使用它时你应该非常小心,我不建议这样做。您还应该考虑使用 QTextEdit::Append() 而不是 setText。

    更好的解决方案是在另一个线程中读取文件,并使用信号和插槽发送要附加到 QTextEdit 的读取数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2012-08-10
      • 2021-10-12
      • 2013-03-18
      • 2011-08-16
      • 2023-03-12
      相关资源
      最近更新 更多