Qt入门

26: 主程式结束
27-29: QT Designer 的注解
30-33: 清除 Form1

由於我们要常常用到 QT Designer, 也就是说,需要常常用到 uic 这苹程式. 为了省去每次都要
打一堆东西的麻烦.我们来写一各小 script 来处理 .ui 档案.
不难看出, uic 在处理/生成 .h .cpp 档案的时侯,用到了两个指令∶

uic -o form1.h form1.ui
uic -i form1.h -o form1.cpp form1.ui

所以我们的 script 就写成∶

###############################################################
#!/bin/sh #
# myuic program convert .ui to .cpp .h by calling uic #
#
INPUT_UI=$@ #
#这里读取外面传回来的文档名 #
#
#
if [ ! -f "$INPUT_UI" ] #
then #
echo "UIC File $INPUT_UI Not Found" #
echo #
echo "Userage myuic input_file.ui" #
echo #
exit 1 #
fi #
#上面的语句检查我们所输入的.ui文档是否存在 #
#假如很难找到指定的.ui文档,则显示一个简短的 #
#使用说明 #
#
INPUT_H=`echo $@ | cut -d '.' -f1`.h #
#这里我们利用 cut 来处理输入的 .ui 文档. #
#得到一个 .h 的文档名 #
#
INPUT_CPP=`echo $@ | cut -d '.' -f1`.cpp #
#同样的道理,利用 cut 产生一个 .cpp 的文档名 #
#
uic -o $INPUT_H $INPUT_UI #
#这里就是利用 .ui 产生 .h 的文档 #
#
uic -i $INPUT_H -o $INPUT_CPP $INPUT_UI #
#利用 .h 和 .ui 产生 .cpp 文档. #
#
###############################################################

我门把这个文档存为 myuic. 并切 chmod x 变成可执行档案.
然後 cp 到 /usr/bin 上面. 假如您在电脑中没有 root 的权限.
能够在自己的 $HOME 目录中做一个 bin 的 Directory 出来.
然後去编辑您的 .bash_profile (这里假设您用的是 bash)
假如您的 .bash_profile 中本身已有了 PATH 这段文字,那麽
您只要在原本的 PATH 後面加上 :$HOME/bin就能够了.假如没有
那麽就在您的 .bash_profile 中写入∶

PATH=$PATH:$HOME/bin

export PATH

这样您以後就能够直接执行 myuic 这个文档了.现在试试看用 myuic 来处理
刚刚的那个 form1.ui 这个文档吧. 先把旧的 .h .cpp 都删除掉∶
rm -f *.cpp *.h
然後用 myuic 来生成新的 .cpp .h 文档∶
myuic form1.ui
这时候用 ls 就会看到 form1.cpp form1.h form1.ui 这三个文档了

这时侯我们只需要写一个小的main.cpp就能够编译form1.cpp了.
main.cpp很的简单

#include "form1.h"
#include

int main(int argc, char **argv)
{
KApplication app(argc, argv, "Form1"); //KDE 是建立在QT的基础上得所以KApplication
//所以kapp.h实际上包含了qapplication.h
Form1 *form1=new Form1();
form1->show();
app.setMainWidget(form1);
return(app.exec());
}

基本上来说,很简单.然後当然就是编译啦.我建议写出来的东西都用 Kdevelop 来解决.首先 Kdevelop
介面很的友善.又能省下写 Makefile 的麻烦.打开 Kdevelop 以後,选择 项目->新建, KDE2-Normal,
然後 选择 Next,在这一页中.注意不要在任何选项中打"x",因为我们用不到.反而会增加麻烦.最後
一直 next,然後 create , exit. 这时侯我们就已有一个新的项目能够用了.在 menu 中选择:
项目->添加现存文档.然後把 qt_program 中的 form1.cpp form1.h 和 main.cpp 加入. 这时候只要按
一下 F9 , Kdevelop 就会自动帮您把程式 compile 出来.并且执行. 程式执行後,我们不能用 click 那个
Exit Button 退出程式.因为我们并没有给他退出的信号.现在让我们来把程式码作些改变∶

###########################################################

#form1.h
#ifndef FORM1_H
#define FORM1_H
#include
class QPushButton;
class Form1 : public QDialog
{
Q_OBJECT
public:
Form1(QWidget *parent=0, const char *name=0);
QPushButton* PushButton1;
};
#endif // FORM1_H

#################################################################

#form1.cpp
#include "form1.h"
#include
#include
Form1::Form1(QWidget* parent, const char* name): QDialog(parent, name)
{
setCaption(tr("Form21"));
PushButton1=new QPushButton(this,"PushButton1");
PushButton1->setGeometry(QRect(130,160,161,71));
PushButton1-vsetText(tr("Exit"));
connect(PushButton1, SIGNAL(clicked()), kapp, SLOT(quit()));
}
Form1::~Form1(){}

####################################################################

main.cpp 保持不变.经过一番简化.程式码马上简单很多了.
这里我们除了把一些由 QT Design 做出的不必要的 code 挑除以外.对 form1.cpp
做了两个小改变.
1.增加了 #include 这个 head file.
2.我们把∶
connect(PushButton1, SIGNAL(clicked()), PushButton1, SLOT(setFocus()));
改变为
connect(PushButton1, SIGNAL(clicked()), kapp, SLOT(quit()));

同样的信号传送,但是目标对象有所改变.现在目标将作用在 kapp 上面也就是我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值