Qt 属于嵌入式Linux GUI 的范畴,它能够提供给开发者建立图形界面所需的所用功能。Qt 的跨平台性非常好,支持几乎所有的平台,包括 Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Irix, FreeBSD, BSD/OS, SCO,
AIX, OS390,QNX 等操作系统。Qt 提供了一种称为 signals/slots(信号/槽) 的安全类型来替代 callback(回调函数),这使得各个元件之间的协同工作变得十分简单。Qt 包括多达400个以上的 C++ 类,同时不断扩展;支持 2D/3D 图形渲染,支持 OpenGL。Qt方面的内容,除了Qt、基于 Framebuffer(帧缓冲) 的 Qt /Embedded外,还有快速开发工具 Qt Designer以及国际化工具 Qt Linguist 等。
QWidget,QMainWindow和QDialog的区别?
QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。
QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。
QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模式的也可以是非模式的。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。
如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。当然了,实际中,你还可以基于任何其他部件类来派生。看实际需求了,比如QFrame、QStackedWidget等等。
QDialog 是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。
【一】一个最简单的Qt程序
新建文件或工程->Qt控件项目->Qt Gui App->名称 创建路径->Next->基类:QDialog ->Finish -> Ctrl+R 运行程序。
双击文件列表的dialog.ui文件,出现图形界面编辑界面。拖动右侧的器件栏中的任意控件至设计窗口,可双击设置大小和内容。再次按下"运行",会出现刚才拖动的图案。
【二】用纯源码编写上述功能
新建文件或工程->其它项目->空的Qt项目->名称 创建路径->Next->Finish。
右击工程文件夹,弹出的菜单中选择Add New->概要->文本文件->main.cpp->Next->Finish。
在main.cpp中依次写入以下代码后并Run查看结果:
#include
int main(int argc ,char * argv[])
{
QApplication app(argc,argv);
return app.exec();
}
/*...................................*/
#include
int main(int argc ,char * argv[])
{
QApplication app(argc,argv);
QDialog *dd=new QDialog();
dd->show();
return app.exec();
}
/*...................................*/
#include
int main(int argc ,char * argv[])
{
QApplication app(argc,argv);
QDialog *dd=new QDialog();
QLabel *label=new QLabel(dd);
Label->setText("hello world");
dd->show();
return app.exec();
}
【三】利用.ui文件实现上述功能
新建文件或工程->其它项目->空的Qt项目->名称 创建路径->Next->Finish。
右击工程文件夹,弹出的菜单中选择Add New->Qt->Qt设计师界面->Dialog without Buttons->Next->Finish。
在工程中选择.ui文件,拖动左侧器件栏的Label至右侧,并更改为hello world。此时按下Run会报错。
选择"过滤视图",去掉"Hide generated files"前面的勾,xxx.ui对应的头文件默认是ui_xxx.h。ui_xxx.h里是设计器设计的窗口的对应代码。ui_xxx.h中类Ui_Dialog里有一个void setupUi()函数,我们是利用这个函数来设计好的窗口的。
右击工程文件夹,弹出的菜单中选择Add New->C++ ->C++ 源文件-> main.cpp->Finish。在main.cpp中写入以下代码后Run:
#include
int main(int argc ,char * argv[])
{
QApplication app(argc,argv);
QDialog *dd=new QDialog();
QLabel *label=new QLabel(dd);
Label->setText("hello world");
dd->show();
return app.exec();
}