课程列表

基本问题

开源资源

好好学习天天向上

联大大纲—通信电子 ;教师介绍; 单片机课程学习经验- 学习路线图; 1.概述 -应用 -定义 -特点 -构成; 2.嵌入式处理器 —DIY CPU处理器ARM处理器Cortex-A8S5PV210讨论; 3.汇编语言 -作业 4.Bootloader -作业 5.Linux内核移植 6.嵌入式Linux程序设计 7.图形用户接口QT 8.其他框架介绍; 9.嵌入式物联网应用系统设计

Qt Designer介绍

Qt提供有非常强大的GUI编辑工具Qt Designer,它的操作界面类似于Windows下的Visual Studio,而且它还提供了相当多的部件资源。

1Qt设计器

Qt允许程序员可以不通过任何设计工具,以纯粹C++代码来设计一个程序。但是更多程序员习惯于在一个可视化环境中来设计程序,尤其是在界面设计时候。因为这种设计方式更加符合人类思考的习惯,也比书写代码要快速的多。Qt Designer的集成开发环境界面如图7.2所示。

7.2  Qt Designer

7.2所显示的是Qt设计器(Qt Designer)的工作界面。Qt 设计器可以用来开发一个应用程序全部或者部分的界面组件。Qt 设计器生成的界面组件最终被变成C++代码,因此Qt设计器可以被用在一个传统的工具链中,并且它是编译器无关的。

默认情况下,Qt Designer的用户界面由几个顶级窗口共同组成。如果程序员习惯于有一个MDI-style的编程操作界面(由一个顶级窗口和几个子窗口组成的界面),可以在菜单Edit->User Interface Mode中选择Docked Window来切换界面。图7.2显示的就是MDI-style 的界面风格。

2Qt Designer 设计QT应用程序的一般步骤

1)使用designer完成以下设计工作:

设计界面,添加窗口组件。

建立信号槽连接。

编写事件处理函数。

保存工程为.ui 文件,得到一个主窗口类。

2)编写main.cpp 文件进行主窗口类的实例化及显示。

3)使用qmake 生成.pro 工程文件。

4)通过qmake 自动生成Makefile 文件。

5make 生成可执行文件。

6)运行应用程序。

设计示例

1/3创建ui 文件

1.建立本机Qt工程环境目录

进入宿主机中系统中,建立QtDemo工程文件目录,书中建立的QtDemo工程文件目录绝对路径为/home/cbt/QtDemo,在Linux环境中建立工程文件目录过程如下:

[root@localhost ~]# cd /home/                                            

[root@localhost home]# mkdir cbt                                         

[root@localhost home]# cd cbt/                                           

[root@localhost cbt]# mkdir QtDemo                                       

[root@localhost cbt]# cd QtDemo                                           

[root@localhost QtDemo]# ls                                              

[root@localhost QtDemo]#                                                 

后续QT工程源文件都建在此目录(/home/cbt/QtDemo)下进行编辑和编译。

2.启动Qt Designer

注意这里使用本章案例1中编译生成环境中的Qt Designer 工具。

[root@localhost QtDemo]# /usr/local/Trolltech/Qt-4.7.0/bin/designer      

该命令使用的是绝对路径,以确保使用的是实验环境配套的工具。

3.编辑源文件

1)创建工程文件。启动designer界面后,选择一个窗口布局Widget 点击“创建”按钮创建工程,如图7.3所示。

7.3  创建工程文件

2)设计界面。拖拽几个简单控件(label显示标签、horizontalSlider水平滑动器、progressBar进度条)进行界面设计。完成设计后的界面布局如图7.4所示。

7.4  设计界面

在图7.4中右侧的属性编辑器中,修改label显示标签显示内容为“QtDemo, progressBar进度条初始值value 为“0”,horizontalSlider水平滑动器初始值value 为“0”,这样做可以保证水平滑动器滑动时候与滚动条同步。progressBar进度条初始值在属性编辑器中位置如图7.5所示。

7.4  设置progressBar进度条初始值

3)建立信号与槽连接。在designer 窗口中点击“Edit”菜单,在弹出窗口中选择“Edit Signals/Slots”项,进入信号和槽编辑模式。点击“Edit”菜单后在弹出窗口如图7.5所示。

7.5  选择信号和槽编辑模式

当设置好信号和槽的编辑模式后,在图7.4所示的设计界面中将鼠标光标放置在水平滑动器上,按住鼠标左键拖拽出红色箭头,指向滚动条,即可建立起两个控件的信号与槽连接,如图7.6所示。

7.6  两个控件的信号与槽连接

在建立信号与槽连接中会弹出编辑对话框,如图7.7所示。在图7.7中选择信号为“valueChanged(int)”,插槽为“setValue(int)”。

注意信号与插槽都是带有相同类型参数。

7.7  信号与槽连接编辑对话框

 

4)保存UI界面工程。在图7.4 所示的设计界面中可以通过Qt Designer工具栏内的快捷方式,实现在不同设计模式间切换。

退出信号与槽编辑模式,进入编辑窗口部件模式,保存当前UI 工程,名称为“QtDemo.ui”,如图7.8所示。

7.8  保存UI界面工程

2/3 编写main.cpp C++主函数

QtDemo工程文件目录下使用文本编辑软件,完成main.cpp主函数的编写。

[root@localhost QtDemo]# vi main.cpp                                     

main.cpp主函数内容如下:

#include "ui_QtDemo.h"

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

QWidget *widget = new QWidget;

Ui::Form ui;

ui.setupUi(widget);

widget->show();

return app.exec();

}

其中,包含的头文件为提前包含的,命名方式为ui_xxx.hxxx 代表UI 保存的工程名字,例如本例中的ui_QtDemo.h,后续编译过程中会生成ui_QtDemo.h文件。此方法为Qt的编译技巧,限于基于Designer的设计方式使用。

[root@localhost QtDemo]# ls                                              

main.cpp QtDemo.ui                                                       

[root@localhost QtDemo]#                                                 

3/3 编辑工程文件

1.使用qmake project 命令编译程序生成工程文件.pro

[root@localhost QtDemo]# /usr/local/Trolltech/Qt-4.7.0/bin/qmake project

[root@localhost QtDemo]# ls                                              

main.cpp QtDemo.pro QtDemo.ui                                            

[root@localhost QtDemo]#                                                 

2.使用qmake 命令生成Makefile 文件

[root@localhost QtDemo]# /usr/local/Trolltech/Qt-4.7.0/bin/qmake         

[root@localhost QtDemo]# ls                                              

main.cpp Makefile QtDemo.pro QtDemo.ui                                   

[root@localhost QtDemo]#                                                 

3.编译工程

[root@localhost QtDemo]# make                                            

/usr/local/Trolltech/Qt-4.7.0/bin/uic QtDemo.ui -o ui_QtDemo.h           

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB        

 -DQT_CORE_LIB  -DQT_SHARED                                              

 -I/usr/local/Trolltech/Qt-4.7.0/mkspecs/linux-g++ -I.                     

-I/usr/local/Trolltech/Qt-4.7.0/include/QtCore                           

      -I/usr/local/Trolltech/Qt-4.7.0/include/QtGui                      

-I/usr/local/Trolltech/Qt-4.7.0/include -I. -I. -I. -o main.o main.cpp   

g++ -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/Qt-4.7.0/lib -o QtDemo main.o

-L/usr/local/Trolltech/Qt-4.7.0/lib lQtGui                              

 -L/usr/local/Trolltech/Qt-4.7.0/lib -L/usr/X11R6/lib lQtCore lpthread 

[root@localhost QtDemo]# ls                                               

main.cpp main.o Makefile QtDemo QtDemo.pro QtDemo.ui ui_QtDemo.h         

[root@localhost QtDemo]#                                                 

编译成功后即可在当前目录下生成Qt 本机的可执行程序QtDemo

4.运行Qt 程序

执行以下命令后,可以运行QtDemo程序,弹出运行界面如图7.8所示。

[root@localhost QtDemo]# ./QtDemo                                        

7.8  QtDemo程序运行界面

在图7.8所示的QtDemo程序运行界面中,可以使用鼠标拖拽水平滑动条,观察滚动条的滚动效果。

本例只是基于QtDesigner的控件及信号与槽来完成界面设计工作,如果用户设计的界面需要自定义控件及信号与槽,可以在Qt源码中通过C++继承与派生方法来实现新类,添加自己的成员即可实现。该范畴属于C++语言内容,此处不再赘述。有兴趣的读者可以参考相关书籍或网络资源独立完成。