我用qtx86版本在pc机上模拟是没有问题的,可是移植到embedded版本上就有显示不及时的问题
代码用的是网上的资源
http://blog.csdn.net/WaderChan/archive/2009/05/19/4199913.aspxview 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板子上就不能,好像几秒钟刷新一次,请各位指点指点。