• 4795阅读
  • 3回复

qt4中textedit显示问题,请教,谢谢。 [复制链接]

上一主题 下一主题
离线timdeng
 
只看楼主 倒序阅读 楼主  发表于: 2009-06-08
在实现一个功能的时候,碰到了一个textedit显示的问题,请高手帮忙分析一下,问题出在哪里,谢谢了。
我要实现如下一个功能:在GUI界面上点击一个按纽,执行一个后台的脚本文件,该脚本文件会执行一系列的操作,最终会产生一个结果文件,将该结果文件的内容显示在textedit中。此功能已实现,但是由于脚本文件执行时间有点长,我就想先在textedit中显示一个提示信息,好让用户知道程序在正常运行,但是这个信息在textedit中就是显示不出来。请问是哪里出了问题,谢谢!功能函数如下:
void EmsimMainWindow::executeEmsim()
{

    resultTextEdit->setPlainText("The process is running, please wait ......");
    const QString str1= "/home/Tim/Practice/emsim/gonghao";
    const QString str2= curFile;
    QStringList qstr=(QStringList() << str1 <<str2);
    QProcess::execute("sh", qstr);

    QFile file("/home/Tim/Practice/emsim/gonghao.txt");
    if (!file.open(QIODevice::ReadOnly|QIODevice::Text)) {
        QMessageBox::warning(this, tr("Power Comsumption Showing"),
                             tr("Cannot read file %1:\n%2.")
                             .arg(file.fileName())
                             .arg(file.errorString()));
        return ;
    }

    QTextStream textstr(&file);
    QString str;
    while (!file.atEnd()) {
        str = textstr.readAll();
      resultTextEdit->setPlainText(str);
    }
    return ;
}
离线timdeng
只看该作者 1楼 发表于: 2009-06-08
开始的时候,代码如下,功能正常(即没有第一行代码)
void EmsimMainWindow::executeEmsim()
{
    const QString str1= "/home/Tim/Practice/emsim/gonghao";
    const QString str2= curFile;
    QStringList qstr=(QStringList() << str1 <<str2);
    QProcess::execute("sh", qstr);

    QFile file("/home/Tim/Practice/emsim/gonghao.txt");
    if (!file.open(QIODevice::ReadOnly|QIODevice::Text)) {
        QMessageBox::warning(this, tr("Power Comsumption Showing"),
                             tr("Cannot read file %1:\n%2.")
                             .arg(file.fileName())
                             .arg(file.errorString()));
        return ;
    }

    QTextStream textstr(&file);
    QString str;
    while (!file.atEnd()) {
        str = textstr.readAll();
      resultTextEdit->setPlainText(str);
    }
    return ;
}
离线timdeng
只看该作者 2楼 发表于: 2009-06-08
添加了一行代码“resultTextEdit->setPlainText("The process is running, please wait ......");”后,该行的信息显示不出来,原来的结果还是正常的。
离线mmmou2000
只看该作者 3楼 发表于: 2009-06-08
resultTextEdit->setPlainText("The process is running, please wait ......");
然后加: resultTextEdit->repaint(); 试一试 不知道可以不?

个人更驱向于 用线程
快速回复
限100 字节
 
上一个 下一个