Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1086309
  • 博文数量: 254
  • 博客积分: 10185
  • 博客等级: 上将
  • 技术积分: 2722
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-25 15:04
文章存档

2011年(8)

2009年(1)

2008年(31)

2007年(214)

分类:

2007-07-29 03:13:55

首先要干的事情是

配置好/root/.bash_profile   也就是配置好编译器,其配置过程如我前面的有一篇文章《关于QTE的》拿文章。里面有详细的介绍,(我只要补充的一点就是为了能使其工作,我们必须要重新启动一下系统。也可以不注销,直接运行下面命令   source /root/.bash_profile  就行啦),当我们把这一步工作做好了的话。我们就可以开始做下一步的工作,也就是写程序啦 ,
   我先写的是helloworld.cpp  程序,如下,
#include
#include .h>
#include

int main(int argc, char** argv)
{
 QApplication app(argc,argv);
 QLabel *label=new QLabel(0);
 QString string("Hello,world");
 label->setText(string);
 label->setAlignment(
  Qt::AlignVCenter | Qt::AlignHCenter);
 label->setGeometry(0,0,180,75);
 label->show();
 app.setMainWidget(label);
 return (app.exec());
 }
 再写我的Makefile ,我前面有关于Makefile的程序,写的很详细,这里就不说怎么写的问题啦,程序如下:
INCL= -I$(QTDIR)/include
CFLAGS= -pipe -O2 -fno-strength-reduce
LFLAGS= -L$(QTDIR)/lib  -L/usr/X11R6/lib
LIBS= -lqt -lX11 -lXext
CC=g++
helloworld: helloworld.o
 $(CC) $(LFLAGS) -o helloworld helloworld.o $(LIBS)

helloworld.o:helloworld.cpp

clean:
 rm -f helloworld
 rm -f helloworld.o

.SUFFIXES: .cpp

.cpp.o:
 $(CC) -c $(CFLAGS) $(INCL) -o $@ $<
说明一下下面的Makefile的变量,如下
INCL  定义头文件的路径名,他们被传送给了编译器告诉编译器到那里去寻找头文件,编译器总是在/usr/include路径下寻找标准头文件。
CFLAGS  定义传给编译器的选择项列表。-pipe 选项指示编译器在两个编译平台间传输数据时使用管道,而不是临时文件,-O2选项设置了一个相当高的最优化级别们 -fno-strength-reduce选项防此最优化过程缩减或者消除重复的变量。
LFLAGS  定义传给连接器的选择项列表,每个-L选项所设置的时包含一个或者多个库的路径。
LIBS   定义这个程序需要用到的库的名称列表,将会在LFLAGS指明的路径下寻找这些库。这些名称都将被扩展成库文件的名字,例如 ,-lqt将改变成libqt.so,而-lX11则成为libX11.so
CC  编译器名称
 当你完成上面那些的时候也就只要make一下就可以看见啦,然后运行。/helloworld  就能看到 你的精彩啦,
 另外介绍我一程序,就是一个控制的,不信就用一下我的例子,我先写qlcd.h
 #include
#include
#include
#include
#include
#include
                                                                               
class MyMainWindow : public QWidget
{
public:
        MyMainWindow();
private:
        QPushButton *b1;
        QLCDNumber *lcd;
        QSlider *slider;
};
再写的是qlcd.cpp
#include
#include
#include
#include
#include
#include
#include "qlcd.h"

MyMainWindow::MyMainWindow()
{
 setGeometry(100,100,300,200);
 
 b1=new QPushButton("quit",this);
 b1->setGeometry(10,10,80,40);
 b1->setFont(QFont("Times",18,QFont::Bold));

 lcd=new QLCDNumber(2,this);
 lcd->setGeometry(100,10,190,180);

 slider=new QSlider(Vertical,this);
 slider->setGeometry(10,60,80,130);

 connect(b1,SIGNAL(clicked()), qApp, SLOT(quit()));

 connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int)));
}
再是main.cpp
#include
#include
#include
#include
#include
#include
#include "qlcd.h"
int main (int argc,char** argv)
{
 QApplication app(argc,argv);
 MyMainWindow w;
 app.setMainWidget(&w);
 w.show();
 app.exec();
}
再是makefile
INCL= -I$(QTDIR)/include
CFLAGS= -pipe -O2 -fno-strength-reduce
LFLAGS= -L$(QTDIR)/lib -L$(KDEDIR)/lib -L/usr/X11R6/lib
LIBS= -lqt -lX11 -lXext
CC=g++
main: main.o qlcd.o
 $(CC) $(LFLAGS) -o main main.o  qlcd.o $(LIBS)
main.o:main.cpp qlcd.h
                                                                                qlcd.o:qlcd.cpp qlcd.h
                                                                               
clean:
 rm -f main
 rm -f main.o
 rm -f qlcd.o
                                                                               
.SUFFIXES: .cpp
                                                                               
.cpp.o:
 $(CC) -c $(CFLAGS) $(INCL) -o $@ $<
好了,你make一下,就出来你想要的结果啦
呵呵。试试。很爽的哦 !

阅读(1558) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~