QT4 Creator下的图形界面编程入门
2013-01-04 15:29
232 查看
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),
用connect将timeout信号与定时处理槽关联起来,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();
}
新建工程:
进入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),
用connect将timeout信号与定时处理槽关联起来,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();
}
相关文章推荐
- linux嵌入式下的QT图形界面开发(入门篇详解)
- qt界面编程入门
- linux嵌入式下的QT图形界面开发(入门篇详解)
- QT Creater入门编程:学习QT编程后,你会发现界面就像小孩子拼积木那样简单.
- linux嵌入式下的QT图形界面开发(入门篇详解)
- 简单图形编程的学习(2)---点 (Qt实现)
- 树莓派入门教程——使用Qt开发界面程序
- c#图形编程入门
- VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)
- VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)
- 【Windows界面编程】界面编程,由此入门 -- 五大内容,绝对收获
- qt-eclipse-c++环境配置(图形界面开发)
- [QT]Qt 嵌入式图形开发(入门篇)
- JavaSwing图形界面编程之对话框(一)
- JavaSwing图形界面编程之JProgressBar(一)
- JAVA图形编程入门(连载7)
- VC.NET的GDI+编程入门教程之图形
- JavaSwing图形界面编程之JTable
- (转载)VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)
- Android 入门到精通 (界面编程#3-ListView)