• 4663阅读
  • 0回复

请教qtembedded4.5.2中qprocess的显示问题 [复制链接]

上一主题 下一主题
离线devilife
 

只看楼主 倒序阅读 楼主  发表于: 2009-12-28
我用qtx86版本在pc机上模拟是没有问题的,可是移植到embedded版本上就有显示不及时的问题
代码用的是网上的资源http://blog.csdn.net/WaderChan/archive/2009/05/19/4199913.aspx

view plaincopy to clipboardprint?
//: main.cpp  
#include "process.h"  
#include <QApplication>  
#include <QTextCodec>  
int main(int argc, char *argv[])  
{  
    QApplication a(argc, argv);  
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());  
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());  
    Process w;  
    w.show();  
    return a.exec();  
}  

//: process.h  
#ifndef PROCESS_H  
#define PROCESS_H  
#include <QWidget>  
class QLabel;  
class QLineEdit;  
class QProcess;  
class QPushButton;  
class QTextEdit;  
class Process : public QWidget  
{  
    Q_OBJECT  
public:  
    Process(QWidget *parent = 0, Qt::WFlags flags = 0);  
    ~Process();  
private slots:  
    void runClicked();  
    void readOutput();  
private:  
    QProcess* cmd;  
    QString output;  
    QLabel* inputLabel;  
    QLineEdit* inputEdit;  
    QPushButton* runButton;  
    QLabel* outputLabel;  
    QTextEdit* outputEdit;  
};  
#endif // PROCESS_H  

view plaincopy to clipboardprint?
//: process.cpp  
#include <QtGui>  
#include "process.h"  
Process::Process(QWidget *parent, Qt::WFlags flags)  
    : QWidget(parent, flags)  
{  
    inputLabel = new QLabel(tr("请输入命令:"));  
    inputEdit = new QLineEdit;  
    runButton = new QPushButton(tr("运行"));  
    outputLabel = new QLabel(tr("运行结果如下:"));  
    outputEdit = new QTextEdit;  
    outputEdit->setReadOnly(true);  
    QHBoxLayout* hlayout = new QHBoxLayout;  
    hlayout->addWidget(inputEdit);  
    hlayout->addWidget(runButton);  
    QVBoxLayout* layout = new QVBoxLayout;  
    layout->addWidget(inputLabel);  
    layout->addLayout(hlayout);  
    layout->addWidget(outputLabel);  
    layout->addWidget(outputEdit);  
    setLayout(layout);  
      
    cmd = new QProcess;  
    cmd->start("/home/test");
    connect(inputEdit, SIGNAL(returnPressed()), this, SLOT(runClicked()));  
    connect(runButton, SIGNAL(clicked(bool)), this, SLOT(runClicked()));  
    connect(cmd, SIGNAL(readyRead()), this, SLOT(readOutput()));  
    resize(500, 300);  
}  
Process::~Process()  
{  
}  
void Process::runClicked()  
{  
    QString input = inputEdit->text();  
    cmd->start(input);  
    output = tr("");  
    outputEdit->setText(output);  
}  
void Process::readOutput()  
{  
    output += cmd->readAll();  
    outputEdit->setText(output);  
}  


test程序是我自己写的不断的输出数据的函数
#include <stdio.h>

#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])    
{  
    int i = 1;
    while (i++)
    {
    printf("AFW:%ddB\n", i);
    }
    return 0;

}

pc机上能实时显示输出数据,但是移植到arm板子上就不能,好像几秒钟刷新一次,请各位指点指点。
快速回复
限100 字节
 
上一个 下一个