QT4 Creator下的图形界面编程入门

1) Qt4 creator的使用

新建工程:

进入Applications -> Programming -> Qt Creator,启动Qt Creator,进入File -> New,选择Projects/Qt4 Gui Application,设置工程保存路径和工程类型,就建立好了一个新的图形界面工程。

编译运行工程:

进入Build -> Build All,编译通过后,进入Build -> Run,就可以运行起来程序。另外在Debug菜单下提供了丰富的程序调试功能。

2)      QT提供的常用窗口及控件类

class QWidget: 基础窗体类

class QPushButton: 命令按钮类

class QFrame: 框架窗体类

class QLabel: 标签类

3)      信号和槽

信号是在对象内部状态发生改变的时候产生的,是一种特殊类型的函数,当某个事件(如鼠标点击,程序退出,键盘按键,对象属性更改等等)发生的时候就被发射。

槽是对象的成员函数,它既可以像普通函数一样直接调用,也能够和信号关联。

创建和定义用户槽:

在类声明中加入Q_OBJECT宏的调用,

在用户槽的类声明中加入slots(可以是public, protected, private类型之一)关键字,

用原对象编译器MOC由类声明的头文件生成c++可识别代码,如moc-qt4 classDeclare.h –o classDeclare.moc

在类定义文件(cpp文件)中包含上述moc文件或者从moc文件和cpp文件创建目标文件,

在类定义文件中定义用户槽。

创建和使用用户信号:

       在类声明中加入Q_OBJECT宏的调用,

       在用户信号的类声明中加入signals关键字,

       在类定义文件(cpp文件)中事件发生的地方,用emit来发射信号,如emit UserSignal(param)

       在类定义文件中合适的地方(如类的构造函数),用connect将信号和槽关联起来,如connect(this, SIGNAL(UserSignal(param)), this, SLOT(UserSlot(param)))

       在类定义文件中需要的地方,用disconnect将信号和槽断开。

4)      定时器

QT中提供了QTimer类来管理定时器功能,其使用方法如下:

定义一个QTimer对象,如QTimer *timer = new QTimer(this)

connecttimeout信号与定时处理槽关联起来,connect(timer, SIGNAL(timeout()), this, SLOT(TimeoutSlot()))

在类定义文件中定义定时器处理槽,

在需要的地方开启或者关闭定时器,如timer->start(1000)timer->stop()

另外,QObject类已经定义了成员虚函数timerEvent()来处理timeout信号,这样就有如下的方法:

在类定义文件需要的地方,用startTimer()来开启定时器,

重载类的成员虚函数timerEvent()来进行相应的定时器处理,

在类定义文件需要的地方,用killTimer()来关闭定时器。

5)      pro文件的工程设置

利用Qt Creator新建工程,会自动生成工程的编译配置文件 pro文件,此文件会在编译工程时,影响Makefile的内容,通过手工修改pro文件的内容,可以更大限度地扩展Qt Creator的集成开发功能,以下介绍几个重要的字段:

OBJECTS_DIR: 用于指定.o文件的输出目录,如OBJECTS_DIR = ./output/

INCPATH: 指定源文件中包含文件的搜索路径,如INCPATH += ../MyDir1 ./MyDir2/Dir3

TARGET: 指定最终生成可执行文件的名字,如TARGET = ../execDir/execFile

DEFINES: 指定工程的预定义宏,如DEFINES += LINUX32 MYDEBUG

HEADERS: 工程所编译的头文件

SOURCES: 工程所编译的源文件

6)      绘制2D图形

Qt提供了QPainter类来创建用户图形,其使用十分简单和直观。

重载绘图对象的类的成员虚函数paintEvent()

在类定义文件中paintEvent()函数的实现体中调用QPainter::begin()QPainter::end()来启动和停止绘图,将绘图的实现代码放在这二者之间即可,如

void MyDrawWnd::paintEvent(QPaintEvent *qp)

{

    QPushButton::paintEvent(qp);

    QPainter paint;

    paint.begin(this);

    paint.drawEllipse(2, 2, this->width()-4, this->height()-4);

    paint.end();

}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值