C语言程序可以放到qt,初学Qt之--在Qt中调用外部C语言模块
調(diào)用外部已編譯好的C語言模塊,傳遞參數(shù)并將結(jié)果返回打印出來。
C語言模塊代碼:
/**********Test.c**********/
/**********用gcc編譯后生產(chǎn)那個(gè)的可執(zhí)行文件test放在..../invokec/C/目錄下**********/
#include
int main(int argc,char *argv[])
{
printf("Hello,I am a C program!\n");
printf("now,I am invoked by a program called Qt!\nfollowing are the parameters that Qt sends to me:\n");
printf("%s\n",argv[0]);
printf("%s\n",argv[1]);
printf("%s\n",argv[2]);
return 0;
}
Qt代碼:
/********MyTest.h***********/
#ifndef MYTEST_H_
#define MYTEST_H_
#include
#include
class MyTest : public QWidget
{
Q_OBJECT
public:
MyTest();
~MyTest();
public slots:
void invokeC();
private:
QPushButton *pb;
};
#endif
/********MyTest.cpp**********/
#include "MyTest.h"
#include
#include
#include
#include
MyTest::MyTest()
:QWidget()
{
this->setGeometry(0,0,200,50);
pb=new QPushButton("點(diǎn)擊調(diào)用C程序",this);
pb->setGeometry(0,0,200,50);
connect(pb,SIGNAL(clicked()),this,SLOT(invokeC()));
}
MyTest::~MyTest()
{
}
void MyTest::invokeC()
{
QProcess *process=new QProcess();
QStringList str;
str.clear();
str << "a" << "b" ;
process->start("../C/test",str);
process->waitForStarted();
process->waitForFinished();
QByteArray qb=process->readAll();
QString str22(qb);
QTextStream cout(stdout);
cout<
}
/***********Main.cpp************/
/*******編譯后放在...../invokeC/Qt/目錄下************/
#include
#include
#include "MyTest.h"
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
QTextCodec *codec = QTextCodec::codecForLocale();
QTextCodec::setCodecForCStrings(codec);
a.setFont(QApplication::font());
MyTest *mt=new MyTest;
mt->show();
return a.exec();
}
運(yùn)行結(jié)果:
(--------完--------)
總結(jié)
以上是生活随笔為你收集整理的C语言程序可以放到qt,初学Qt之--在Qt中调用外部C语言模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Office for Mac 2021
- 下一篇: 唐山市高中计算机考试,2010唐山中考信