63c3faed959ee499c5dcc7a9d27ceb07.ppt
- Количество слайдов: 21
LOGO Qt程序设计 Qt基础及简单例子
LOGO Qt简介 Qt是跨平台的C++图形界面的 具包,可以方便 的应用于绝大多数的操作系统。 ◆ MS/Windows 95、Windows 98、Windows. NT 4. 0、 Windows 2000、Windows XP; ◆ Unix/X 11 Linux、Sun Solaris、HP-UX、Compaq True 64 Unix、IBM AIX、SGI IRIX和很多其它X 11 平台; ◆ Macintoshi Mac OSX; ◆ 嵌入式的,包含有Fram. Buffer 的Linux 平台。
Qt特性 Qt作为新型的GUI开发 具,具有与一般 具 包所不同的特性,使他的应用非常的广泛。 面向对象 构件支持 有好的联机帮助 用户自定义 方便性 国际化 丰富的API函数 完整的一套组建 高性能的 具 可用户化的外观 优越的绘画功能 2 D/3 D图形润色功能
Qt与X 11的关系 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中为 Application. Window建 立一个指针如: QPush. Button 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 (my. Object); 断开与一个signal的任何连接 discount (my. Object, SIGNAL(my. Signal())); 断开一个指定的接受者 discount (my. Object, 0, SIGNAL(my. Signal(), 0)); ◆退出事件程序 return a. exec();
Qt的组件 常见的Qt的组件: Button按钮 Frame框架 Dialog对话框 Geometry几何图像 Combox选择组件 顶层组件 其他(Qscroll. Bar, QTabbar)
Qt中 3个主要的基类 1. QObjiect类是所有能够处理signal,slot和时间的 Qt对象的基类 2. QApplication类负责GUI应用程序的的控制流和主 要的设置,它包含主事件循环体,负责处理和调 度所有来自窗口系统和其他资源的事件,并且处 理应用程序的开始,结束以及会话管理,还包括 系统和应用程序方面的设置。 3. QWidget类是所有用户接口对象的基类,它继承 QObject类的属性。
组件的建立 建立组件是可以单独创建一个组件,使他自己 作为主组件,也可以在创建主组件的基础上在建 立子组件,在多个组件的情况下,只有一个主组 件。关闭主组件以后,应用程序也将退出。 QPush. Button hello( "Hello world!", 0 ); 创建的Push. Button上显示文字“Hello world!”第 二个参数为 0,说明他做自己的窗口,是主组件。
一个简单的例子 • • • • #include <qapplication. h> #include <qpushbutton. h> #include <qfont. h> int main( int argc, char **argv ) { QApplication a( argc, argv ); QPush. Button quit( "Quit", 0 ); quit. resize( 75, 30 ); quit. set. Font( QFont( "Times", 18, QFont: : Bold ) ); QObject: : connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) ); a. set. Main. Widget( &quit ); quit. show(); return a. exec(); }
#include <qapplication. h> 这一行包含了QApplication 类的定义。在每个使 用Qt 的应用程序中都必须使用一个QApplication 对象。QApplication 管理了各种各样的应用程序 的广泛资源,比如默认的字体和光标。 #include <qpushbutton. h> 这一行包含了QPush. Button 类的定义。 QPush. Button 是一个经典的图形用户界面按钮, 用户可以按下去,也可以放开。一个 QPush. Button 可以显示一段文本或者一个 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 对象是必 须的。 QPush. Button quit( "Quit", 0 ); 这个按钮被设置成显示“Quit”并且它自己构成了一 个窗口(因为在构造函数指定 0 为它的父窗口, 在这个父窗口中按钮被定位)。 quit. resize( 75, 30 ); 这个按扭被设置成 75像素宽,30 像素高(加上窗 口系统边框)。
quit. set. Font( QFont( "Times", 18, QFont: : Bold ) ); 这里我们给这个按钮选择了一个新字体,Times 字体中的18 点加粗字体。 QObject: : connect( &quit, SIGNAL(clicked()), &a, SLOT(quit())); 这里 quit 的clicked()信号和a 的quit()槽连接起来 了,所以当这个按钮被按下的时候,这个程序就 退出了。 a. set. Main. Widget( &quite ); 这个按钮被选为这个应用程序的主窗口部件。如 果用户关闭了主窗口部件,应用程序就退出了。
hello. show(); 当你创建一个窗口部件的时候,它是不可见的。 你必须调用show()来使它变为可见的。 return a. exec(); 这里就是main()把控制转交给Qt,并且当应用程 序退出的时候exec()就会返回。在 exec()中,Qt 接受并处理用户和系统的事件并且把它们传递给 适当的窗口部件。
谢谢
63c3faed959ee499c5dcc7a9d27ceb07.ppt