Qt程序设计 Qt基础及简单例子 LOGO Qt简介 Qt是跨平台的C++图形

Download Report

Transcript Qt程序设计 Qt基础及简单例子 LOGO Qt简介 Qt是跨平台的C++图形

LOGO
Qt程序设计
Qt基础及简单例子
LOGO
Qt简介
Qt是跨平台的C++图形界面的工具包,可以方便
的应用于绝大多数的操作系统。
◆ MS/Windows 95、Windows 98、WindowsNT 4.0、
Windows 2000、Windows XP;
◆ Unix/X11 Linux、Sun Solaris、HP-UX、Compaq
True64Unix、IBM AIX、SGI IRIX和很多其它X11 平台;
◆ Macintoshi Mac OSX;
◆ 嵌入式的,包含有FramBuffer 的Linux 平台。
Qt特性
Qt作为新型的GUI开发工具,具有与一般工具
包所不同的特性,使他的应用非常的广泛。
面向对象
构件支持
有好的联机帮助
用户自定义
方便性
国际化
丰富的API函数
完整的一套组建
高性能的工具
可用户化的外观
优越的绘画功能
2D/3D图形润色功能
Qt与X11的关系
Xlib构建了编写X Window程序的是最底层的
功能,Qt则基于Xlib之上建立了更高层次的工具
包。
KDE
QT库
Xwindow系统/Xlib
操作系统
硬件与平台
Qt编程的特点
1.初始化
在Qt的应用程序中,首先是创建QApplication
对象,QApplication类是负责图形用户界面的应
用程序的控制流和主设置。
int main( int argc, char **argv )
{
QApplication a( argc, argv );
......}
Qt编程的特点
2.窗口的创建
在Qt程序中,在main.cpp中为 ApplicationWindow建
立一个指针如:
QPushButton hello( "Hello world!", 0 );
另外,组建创建的时候一般是不可见的,需要调用
QWidget的成员函数 show()来显示组件。
Qt编程的特点
3.画图
在Qt程序中,画图是由绘图设备来完成的,由
Qpainter,Qpixmap,Qprinter和Qwidget等类来
实现。
Qt编程的特点
4.颜色
QPalette 类包含为每一个组件状态准备的颜
色组件,它包含三个颜色组:Normal,Disabled
,Active。所有的组件包括一个调色板,Qt中所
有的组件都用他们自己的调色板去画组件本身。
Qt编程的特点
5.事件
Qt的事件处理过程:QApplication的事件循
环体从事件队列中拾取本地窗口的系统的事件或
其他的事件,将事件翻译成QEvent(),然后送给
QObject::event(),最后给QWidget::event()分别
对事件处理。
在Qt编程中,对事件的处理方式也是采用回
调的方式,但是在事件的发出和接收采用的是
signal和slot的机制,这是Qt的主要特征。
◆Signal 和 Slot声明
在所有包含signal与slot的类的声明中,都需要加
上Q_OBJECT。定义为:
signals: void clicked();
private slots:
void
animate();
◆Signalhe Slot的连接
在signal和slot声明以后,需要用connect()函
数连接起来,因为signal与slot彼此之间并不了解
对方。
bool QObject::connect(const QObject* sender,const char*signal
,const QObject* receiver,cont char* member)[static]
第一个和第三个参数分别指single或slot是属于哪个对象或组件的对象
◆signal和slot的断开连接
断开与一个对象的任何signal的任何连接
discount (myObject);
断开与一个signal的任何连接
discount (myObject, SIGNAL(mySignal()));
断开一个指定的接受者
discount (myObject, 0,SIGNAL(mySignal(),0));
◆退出事件程序
return a.exec();
Qt的组件
常见的Qt的组件:
Button按钮
Frame框架
Dialog对话框
Geometry几何图像
Combox选择组件
顶层组件
其他(QscrollBar,QTabbar)
Qt中3个主要的基类
1.QObjiect
QObjiect类是所有能够处理signal,slot和时间的
Qt对象的基类
2.QApplication
QApplication类负责GUI应用程序的的控制流和主
要的设置,它包含主事件循环体,负责处理和调
度所有来自窗口系统和其他资源的事件,并且处
理应用程序的开始,结束以及会话管理,还包括
系统和应用程序方面的设置。
3.QWidget
QWidget类是所有用户接口对象的基类,它继承
QObject类的属性。
组件的建立
建立组件是可以单独创建一个组件,使他自己
作为主组件,也可以在创建主组件的基础上在建
立子组件,在多个组件的情况下,只有一个主组
件。关闭主组件以后,应用程序也将退出。
QPushButton hello( "Hello world!", 0 );
创建的PushButton上显示文字“Hello world!”
第二个参数为0,说明他做自己的窗口,是主组件
。
一个简单的例子
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
int main( int argc, char **argv )
{
QApplication a( argc, argv );
QPushButton quit( "Quit", 0 );
quit.resize( 75, 30 );
quit.setFont( QFont( "Times", 18, QFont::Bold ) );
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
a.setMainWidget( &quit );
quit.show();
return a.exec();
}
#include <qapplication.h>
这一行包含了QApplication 类的定义。在每个使
用Qt 的应用程序中都必须使用一个QApplication
对象。QApplication 管理了各种各样的应用程序
的广泛资源,比如默认的字体和光标。
#include <qpushbutton.h>
这一行包含了QPushButton 类的定义。
QPushButton 是一个经典的图形用户界面按钮,
用户可以按下去,也可以放开。一个
QPushButton 可以显示一段文本或者一个
QPixmap
#include <qfont.h>
因为这个程序使用了QFont,所以它需要包含
qfont.h。Qt 的字体的载入和使用都已经被高度优
化了。
int main( int argc, char **argv )
{
main()函数是程序的入口。几乎在使用Qt 的所有
情况下,main()只需要在把控制转
交给Qt 库之前执行一些初始化,然后Qt 库通过
事件来向程序告知用户的行为。
argc 是命令行变量的数量,argv 是命令行变量的
数组。
QApplication a( argc, argv );
a 是这个程序的QApplication。在任何Qt 的窗口
系统部件被使用之前创建QApplication 对象是必
须的。
QPushButton quit( "Quit", 0 );
这个按钮被设置成显示“Quit”并且它自己构成了一
个窗口(因为在构造函数指定0 为它的父窗口,
在这个父窗口中按钮被定位)。
quit.resize( 75, 30 );
这个按扭被设置成75像素宽,30 像素高(加上窗
口系统边框)。
quit.setFont( QFont( "Times", 18, QFont::Bold ) );
这里我们给这个按钮选择了一个新字体,Times
字体中的18 点加粗字体。
QObject::connect( &quit, SIGNAL(clicked()), &a,
SLOT(quit()));
这里 quit 的clicked()信号和a 的quit()槽连接起来
了,所以当这个按钮被按下的时候,这个程序就
退出了。
a.setMainWidget( &quite );
这个按钮被选为这个应用程序的主窗口部件。如
果用户关闭了主窗口部件,应用程序就退出了。
hello.show();
当你创建一个窗口部件的时候,它是不可见的。
你必须调用show()来使它变为可见的。
return a.exec();
这里就是main()把控制转交给Qt,并且当应用程
序退出的时候exec()就会返回。在 exec()中,Qt
接受并处理用户和系统的事件并且把它们传递给
适当的窗口部件。
谢谢