QT4 Creator下的图形界面编程入门
来源:互联网 发布:网络科学导论 pdf 编辑:程序博客网 时间:2024/06/12 10:16
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();
}
- QT4 Creator下的图形界面编程入门
- Linux下的图形界面编程
- Linux下的图形界面编程
- Linux下的GTK图形界面编程
- Linux下的GTK图形界面编程
- Linux下的GTK图形界面编程
- Linux下的GTK图形界面编程
- QT4.7.4+Qt Creator的安装总结
- Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440
- Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到min
- Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440
- Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440
- 关于QtSerialPort编译在Qt4.8.6+Qt creator+Win7 / XP环境下的总结
- Linux下QT4编程
- 在VS2010下编译QT4.7.1和QT Creator
- 在VS2010下编译QT4.7.1和QT Creator
- ubuntu14.04下安装qt4.8.6 +qt creator
- QT4.8.6/QT Creator Windows环境下安装与配置
- hibernate的优化-懒加载(lazy)----张国亮总结心得第二季
- 重置mysql root 密码
- 将date类型的数据转换成XMLGregorianCalendar
- STL笔记
- Hadoop error: Bad connection to FS. command aborted.
- QT4 Creator下的图形界面编程入门
- shell脚本的详细使用
- wamp环境下安装mongoDB并添加php的mongo扩展(PHP 5.3.1+Win7环境)
- CvArr、Mat、CvMat、IplImage、转换
- nodejs event模块
- C语言之strncat函数
- horizon连接数据库
- 用Jdk自带工具keytool生成受信任的证书
- Can't connect to MySQL server error 111