用QT Designer快速开发嵌入式系统gui概要
第7章基于QT的嵌入式GUI程序设计
第7章基于QT的嵌入式GUI程序设计第7章基于QT的嵌入式GUI程序设计基础随着信息技术的迅速发展和芯片制造工艺的不断进步,人类已经进入一个全新的数字时代,数字化产品空前繁荣,嵌入式系统被应用于空前广泛的领域:从军事电子设备、现代武器到工业过程控制,从网络通信、办公自动化到消费电子领域,到处都有嵌入式系统的身影。
嵌入式产品将与人们的生活结合的越来越紧密,嵌入式Linux由于它的开源性、内核的健壮性和稳定性、可裁减性、有着专业的商业公司和世界顶尖的自由软件开发者的支持和维护等各方面优势,吸引了嵌入式开发商的目光,成为了嵌入式操作系统的新宠。
在嵌入式Linux 上开发系统软件和应用程序一直缺乏强大的开发环境。
普通Linux 有自己标准的GUI 系统X-Windows,但是由于X-Windows过于庞大和臃肿,极耗系统资源,而且其中不少功能对于嵌入式系统来说是多余的,不适于资源有限的嵌入式系统使用。
嵌入式系统与传统计算机系统相比更专门化,其软硬件设计直接从具体应用出发,嵌入式Linux 是应用于嵌入式设备开发上的一种操作系统。
通常嵌入式设备中的GUI 系统占据资源较多,因此对GUI 的筛选显得很重要。
嵌入式Linux 需要高性能、轻量级的GUI 系统,于是Qt/Embedded 的出现,很大程度上解决了在使用嵌入式Linux作为操作系统的移动设备上开发应用软件的难题。
7.1 嵌入式GUI简介早期嵌入式系统功能简单,对图形用户界面需求并不是太大。
例如,在相对简单的、以单片机为核心的简单工控系统中,人机交互通常以LED和按键相结合的方式,随后才有了简单的屏幕。
这些只是简单的输入、输出系统,不能被称为“GUI系统”。
另外,图形系统对硬件要求太高,在当时的嵌入式上实现几乎没有可能。
随着嵌入式系统的发展和普及,嵌入式系统越来越复杂,其功能越来越强大,GUI在嵌入式系统中的作用也就显得越来越突出。
当智能手机、PDA等系统出现后,嵌入式系统已经不是仅仅给个别专业操作人员所使用的,而需要适用于很广泛的群众。
qt ui开发流程
qt ui开发流程Qt 是一种流行的跨平台应用程序开发框架,它提供了丰富的工具和库,用于快速开发用户界面(UI)应用程序。
本文将介绍使用Qt 开发 UI 的流程,并提供一些实用的建议和技巧。
1.需求分析在开始开发之前,首先需要明确应用程序的需求和目标。
这包括确定应用程序的功能、界面设计和用户交互需求。
可以与产品经理、设计师和其他相关人员进行讨论,以确保对需求有一个清晰的理解。
2.界面设计在开始编码之前,需要设计应用程序的界面。
这可以通过使用Qt 提供的设计器工具(如Qt Designer)来完成。
设计器工具允许您以图形方式创建和布局 UI 元素,如按钮、文本框和标签等。
3.编码一旦界面设计完成,就可以开始编写代码了。
Qt 提供了一套强大的C++ 库,可以用于创建和管理UI 元素、处理用户输入、执行计算和与后端逻辑进行交互等。
您可以使用 Qt Creator IDE 来编写代码,并利用其提供的自动完成功能和调试工具来提高开发效率。
4.布局管理在编写代码时,需要考虑如何布局 UI 元素以实现良好的用户体验。
Qt 提供了多种布局管理器(如水平布局、垂直布局和网格布局),可帮助您自动调整和排列 UI 元素,以适应不同尺寸和分辨率的屏幕。
5.事件处理用户界面应用程序通常需要响应用户的输入和交互。
在Qt 中,您可以使用信号和槽机制来处理事件。
信号是由 UI 元素发出的事件,而槽是事件的接收者。
您可以将信号与槽连接起来,以实现特定的功能和行为。
6.样式和主题Qt 允许您自定义应用程序的样式和主题,以使其与您的品牌和设计语言保持一致。
您可以使用 Qt 提供的样式表功能来更改 UI 元素的外观(如颜色、字体和边框等),并使用主题来定义整个应用程序的外观和风格。
7.本地化和国际化如果您的应用程序需要支持多种语言和地区,那么本地化和国际化是必不可少的。
Qt 提供了一套强大的本地化工具,可以轻松地将应用程序翻译成多种语言,并处理日期、货币和其他与地区相关的格式。
使用qt工具及开发gui的一般流程
使用qt工具及开发gui的一般流程
一般的使用Qt工具开发GUI的流程可以分为以下几个步骤:
1. 设计UI界面:使用Qt的可视化开发工具Qt Designer,通
过拖拽控件、设置属性等方式设计界面布局。
2. 编写UI逻辑:使用Qt提供的信号与槽机制,连接界面上的控件和逻辑代码。
在代码中处理用户交互、界面更新和事件响应等。
3. 编写业务逻辑:根据需求,在界面逻辑的基础上编写具体的业务逻辑,包括数据处理、算法实现等。
4. 构建与编译:使用Qt的开发环境Qt Creator进行工程管理、配置构建选项、编译项目。
5. 调试与测试:通过Qt提供的调试工具进行代码调试和测试,检查程序的运行情况和逻辑是否正确。
6. 打包与发布:根据不同的平台,使用Qt提供的打包工具将
程序打包成可执行文件或安装包,发布给用户使用。
在整个开发过程中,还可以使用Qt提供的其他工具和库来辅
助开发,如Qt Assistant提供的文档阅读和查找功能、Qt Designer提供的可视化UI设计、Qt Linguist提供的多语言支
持等。
嵌入式qt开发项目教程
嵌入式qt开发项目教程嵌入式Qt开发项目教程的内容大致可以分为以下几部分:第一部分:项目概述和环境搭建在这一部分,你需要介绍一下嵌入式Qt开发项目的基本概念和应用场景,例如智能家居系统、工业自动化设备等。
然后,你需要指导读者如何搭建Qt开发环境,包括安装Qt Creator、配置交叉编译工具链等。
第二部分:创建项目和界面设计在这一部分,你需要教读者如何使用Qt Creator创建一个新的嵌入式Qt开发项目。
然后,你需要详细介绍Qt Designer工具的使用方法,让读者学会通过拖拽和组件布局的方式设计出所需的界面。
第三部分:编写业务逻辑和功能实现在这一部分,你需要指导读者如何使用C++语言编写业务逻辑和功能实现代码。
包括如何响应用户界面的交互动作、如何与外部硬件设备进行通信等。
第四部分:调试和优化在这一部分,你需要介绍一些常见的嵌入式Qt开发项目调试和优化技巧。
例如如何使用Qt Creator的调试工具进行程序调试、如何进行内存分析和性能优化等。
第五部分:打包和部署在这一部分,你需要指导读者如何将嵌入式Qt开发项目打包成可执行文件,并部署到嵌入式设备上运行。
包括如何选择合适的编译选项进行编译、如何将依赖的库文件一起打包、如何配置和启动嵌入式设备等。
最后,你可以总结一下整个教程的内容,给读者一些额外的提示和建议,例如如何继续学习和掌握嵌入式Qt开发的进阶内容。
同时,提供一些有用的参考资料和学习资源,以帮助读者更好地深入学习和应用嵌入式Qt开发技术。
综上所述,一篇关于嵌入式Qt开发项目教程的文章可以包含以上内容,通过简单明了的指导和实例让读者了解和掌握嵌入式Qt开发的基本原理和技巧。
qt designer使用手册
qt designer使用手册Qt Designer是Qt的官方集成开发环境(IDE)中的一个强大工具,用于创建图形用户界面(GUI)。
以下是关于Qt Designer的使用手册,大约800字。
一、Qt Designer概述Qt Designer是一个可视化的GUI设计工具,它允许开发者通过拖放界面元素来创建用户界面。
它提供了丰富的控件库,包括按钮、文本框、滑块、菜单等,以及各种布局管理器,如垂直布局、水平布局、网格布局等。
二、安装和启动Qt Designer首先,您需要安装Qt开发环境。
您可以从Qt官方网站下载并安装适合您操作系统的版本。
安装完成后,在Qt安装目录下找到Qt Creator应用程序并启动。
在Qt Creator中,您可以看到一个可用的“Qt Designer”工具栏。
三、创建新的UI文件要创建一个新的UI文件,请单击“文件”菜单,然后选择“新建文件或项目”。
在弹出的对话框中,选择“Qt Widget 应用程序”模板,然后单击“选择”。
在“项目设置”对话框中,输入项目名称和保存路径,然后单击“下一步”。
在“选择语言”对话框中,选择C++作为编程语言,然后单击“下一步”。
在“选择Qt版本”对话框中,选择您要使用的Qt版本,然后单击“下一步”。
在“配置详细信息”对话框中,选择您要使用的编译器和其他选项,然后单击“完成”。
这将创建一个新的UI文件。
四、设计GUI界面在Qt Designer中设计GUI界面非常简单。
您可以从工具栏中拖放控件到窗口编辑器中。
您可以调整控件的位置、大小和属性,如文本、颜色、字体等。
您还可以使用各种布局管理器来排列控件。
在工具栏中,您可以看到各种布局管理器,如垂直布局、水平布局、网格布局等。
五、保存和加载UI文件当您完成GUI设计后,可以保存UI文件。
在Qt Designer 中,单击“文件”菜单,然后选择“保存”。
在弹出的对话框中,选择保存路径和文件名,然后单击“保存”。
QtDesigner的使用
QtDesigner的使⽤1. Qt Designer 快速⼊门Qt Designer 是交互式可视化GUI设计⼯具,可以帮助我们快速开发 PyQt 程序的速度。
它⽣成的 UI 界⾯是⼀个后缀为 .ui 的⽂件,可以通过 pyiuc 转换为 .py ⽂件。
1.1 新建主窗⼝在模板选项中,最常⽤的是 Widget (通⽤窗⼝) 和 Main Window (主窗⼝)。
1.2 窗⼝主要区域介绍Widget Box 其中提供了很多控件,可以直接拖放到主窗⼝中。
在菜单栏选择 “Form” -> "Preview", 或者按“Ctrl + R”即可预览。
Object Inspactor ⾥边是对象列表,可以看出对象的层次关系。
Property Editor 可以编辑对象的属性Signal / slot Editor 编辑信号,管理图⽚1.3 将 ui ⽂件转为 py ⽂件利⽤加载好的 PyUIC ⼯具转变为 py转换成功的 myMainWindow.py 代码如下所⽰# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'myMainWindow.ui'## Created by: PyQt5 UI code generator 5.6## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_myMainWindow(object):def setupUi(self, myMainWindow):myMainWindow.setObjectName("myMainWindow")myMainWindow.resize(800, 600)self.centralwidget = QtWidgets.QWidget(myMainWindow)self.centralwidget.setObjectName("centralwidget")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(140, 270, 75, 23))self.pushButton.setObjectName("pushButton")myMainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(myMainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))self.menubar.setObjectName("menubar")myMainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(myMainWindow)self.statusbar.setObjectName("statusbar")myMainWindow.setStatusBar(self.statusbar)self.retranslateUi(myMainWindow)QtCore.QMetaObject.connectSlotsByName(myMainWindow)def retranslateUi(self, myMainWindow):_translate = QtCore.QCoreApplication.translatemyMainWindow.setWindowTitle(_translate("myMainWindow", "MainWindow"))self.pushButton.setText(_translate("myMainWindow", "Confirm"))1.4 界⾯与逻辑分离通过转换 ui ⽂件为 py ⽂件,得到的只是界⾯的 ui 的类, 并不包括启动界⾯的函数,我们称之为界⾯⽂件。
PyQt图解QtDesigner工具的使用方法
PyQt图解QtDesigner工具的使用方法Qt Designer是Qt的一个可视化开发工具,被广泛用于快速构建GUI
应用程序的用户界面。
它提供了简单易用的拖放方式来设计和布置GUI组件,并通过生成对应的代码文件来实现和设置组件的属性和功能。
下面是
一个简要的PyQt图解Qt Designer工具的使用方法。
首先,打开Qt Designer工具。
这可以通过在命令行中输入
`designer`来运行。
也可以在Qt Creator中选择Qt Designer。
在设计界面时,我们还可以调整和布局组件的位置、大小和外观。
通
过选择组件并拖动边框或角落的手柄,我们可以调整组件的大小。
通过选
择组件并拖动,我们可以调整组件的位置。
在Qt Designer中,还可以添加信号和槽,从而实现组件的交互功能。
通过选择一个组件,然后右键单击并选择“附加动作”菜单,我们可以为
组件添加动作,并将其连接到其他组件的槽函数。
除了设计界面,Qt Designer还支持生成对应的Python代码文件。
通过选择“文件”菜单中的“保存”选项,我们可以将设计界面保存
为.ui文件。
然后,可以使用PyQt提供的uic工具将.ui文件转换为相应
的Python代码文件。
以上是一个简要的PyQt图解Qt Designer工具的使用方法。
通过Qt Designer,我们可以快速、方便地设计和构建GUI应用程序的用户界面,
大大提高开发效率。
pyqt designer使用
pyqt designer使用PyQt Designer是PyQt5中的一个可视化设计工具,它可以帮助我们快速地创建GUI界面。
在这篇文章中,我们将介绍如何使用PyQt Designer来设计GUI界面。
一、安装PyQt5和PyQt Designer首先,我们需要安装PyQt5和PyQt Designer。
可以通过以下命令来安装:```pip install PyQt5``````sudo apt-get install qttools5-dev-tools```二、启动PyQt Designer在终端中输入以下命令来启动PyQt Designer:```designer```三、创建新的GUI界面1. 打开设计窗口当我们启动了PyQt Designer后,会看到一个空白的窗口。
这个窗口就是设计窗口。
2. 添加控件在左边的工具栏中,有很多控件可以选择。
我们可以通过拖拽的方式将控件添加到设计窗口中。
3. 设置控件属性每个控件都有一些属性,例如大小、位置、字体等等。
我们可以通过属性编辑器来设置这些属性。
4. 保存GUI界面当我们完成了GUI界面的设计后,可以通过菜单栏中的“文件”->“保存”来保存GUI界面。
四、将GUI界面转换为Python代码1. 在终端中输入以下命令:```pyuic5 -x [UI文件名].ui -o [Python文件名].py```其中,[UI文件名]是我们刚才保存的GUI界面文件名,[Python文件名]是我们要生成的Python代码文件名。
2. 在Python代码中使用GUI界面在我们生成的Python代码中,有一个类,这个类继承自QtWidgets.QMainWindow。
我们可以在这个类中添加逻辑代码。
3. 运行程序当我们完成了Python代码的编写后,可以通过以下命令来运行程序:```python [Python文件名].py```五、总结PyQt Designer是一个非常实用的工具,它可以帮助我们快速地创建GUI界面。
[PyQt入门教程]QtDesigner工具的使用
[PyQt⼊门教程]QtDesigner⼯具的使⽤Qt Designer是PyQt程序UI界⾯的实现⼯具,使⽤Qt Designer可以拖拽、点击完成GUI界⾯设计,并且设计完成的.ui程序可以转换成.py⽂件供python程序调⽤。
本⽂主要通过⽤户登录需求描述Qt Designer⼯具开发界⾯的使⽤⽅法。
本⽂主要内容1、Qt Designer程序主界⾯窗⼝介绍。
2、Qt Designer程序实现界⾯开发的案例。
包括使⽤Qt Designer实现程序Gui开发、使⽤pyuic5将.ui转换.py程序、信号与槽的配置以及实现、使⽤pyinstaller转换成可执⾏程序的完成过程。
环境&⼯具版本Win10+pyhton3.7.4 + PyQt 5.11.2Qt Designer⼯具主界⾯打开路径:${python安装⽬录}/Lib/site-packages/pyqt5_tools/designer.exe。
主界⾯如下:主界⾯不同区域介绍:⼯具箱区域:提供GUI界⾯开发使⽤的各种基本控件,如单选框、⽂本框等。
可以拖动到新创建的主程序界⾯。
主界⾯区域:⽤户放置各种从⼯具箱拖过来的各种控件。
模板选项中最常⽤的就是Widget(通⽤窗⼝)和MainWindow(主窗⼝)。
⼆者区别主要是Widget窗⼝不包含菜单栏、⼯具栏等。
可以分别创建对⽐看看。
对象查看器区域:查看主窗⼝放置的对象列表。
属性编辑器区域:提供对窗⼝、控件、布局的属性编辑功能。
⽐如修改控件的显⽰⽂本、对象名、⼤⼩等。
信号/槽编辑器区域:编辑控件的信号和槽函数,也可以添加⾃定义的信号和槽函数。
Qt Designer基本控件介绍Widget Box控件⼯具箱是按照控件作⽤类别进⾏划分的。
这⾥作为实现⼊门级界⾯实现,主要介绍最常使⽤的控件及控件对象相关函数。
函数⽅法知道怎么获取控件输⼊内容以及如何将后台操作结果输出到界⾯控件显⽰的主要函数就可以了。
嵌入式Linux下用Qt Designer开发及实例
嵌入式Linux用Qt Designer快速开发RAD(快速应用程序开发)是一种高效的软件开发形式,可以让用户在极短的时间里创建一个图形化的用户界面。
通常情况下,在一张空白的表单上,开发人员可以通过拖拉或点击的方式,在窗口的适当位置上添加一些输入框和按钮等窗口组件。
这时,RAD工具会自动编写和维护代码。
而用户所要做的只是确定当点击按钮或选择选单选项时将要发生什么事件。
在Linux下,一个非常流行的RAD工具就是Qt Designer。
它是嵌入式公司Trolltech 的Qt软件包的一个组成部分。
如果用户使用的是KDE桌面,那么Qt已经自动安装上了,Qt Designer也很有可能已经被安装好。
如果用户的系统没有安装,那么针对不同的版本,可以很方便地找到KDE Development Tools,并安装之。
以Red Hat 9.0为例,用户可以从主选单→系统设置→添加/删除应用程序中选择KDE 软件开发,即可完成Qt Designer的安装(如图1所示)。
图1 安装Qt Designer创建为了快速地向大家展示一下Qt Designer功能,先创建一个简单的摄氏温度和华氏温度的转换程序。
本文里将设计一个简单的GUI,并且添加一些简单的代码来实现温度的转换。
因为是为了展示一下快速的开发过程,而不是一个严谨的软件项目的开发,所以这里不会进行任何的错误检查,也不进行输入检验(也就是检查用户的输入是否为合法的温度形式)、缓冲溢出检查等在日常软件开发中一定要做的步骤。
如果用户使用的是KDE,那么选单上应该已经有Qt Designer的图标。
不同的发行版,图标的位置会有所不同。
如果用户的发行版没有Qt Designer图标,那么可以在命令行模式下输入“designer”命令来启动该开发工具。
在Red Hat 9.0中,可以通过点击主选单→编程→更多编程工具→Qt Designer来启动(如图2)。
图2 启动Qt DesignerQt Designer首先呈现给用户的是一个New/Open对话框(如图3所示)。
第四讲使用qtdesigner快速设计界面
第四讲使用qtdesigner快速设计界面首先,需要在Qt Creator中创建一个新的Qt设计师界面项目。
在Qt Creator中选择“文件”->“新建文件或项目”->“Qt”->“Qt设计师界面”,然后选择“Qt设计师界面”,点击“选择”按钮。
在下一个页面,选择要创建的界面类型,这里可以选择“对话框”、“主窗口”、“窗口”等。
根据具体的需求选择一个适合的类型,然后点击“下一步”按钮。
接下来,需要为界面命名并选择保存路径,可以选择一个合适的位置进行保存。
点击“下一步”,然后选择要使用的Qt Widget模板。
根据需要选择一个模板,然后点击“下一步”。
最后,点击“完成”按钮以完成项目的创建。
在Qt Designer中,还可以进行布局管理。
通过点击“布局”按钮,可以选择不同的布局方式,比如垂直布局、水平布局等。
通过使用布局管理器,可以自动调整控件的位置和大小,使得界面更加美观。
另外,Qt Designer还提供了预览功能,点击“预览”按钮可以在设计时查看界面的最终效果。
设计完成后,可以通过点击“文件”->“保存”来保存界面文件。
该文件的后缀名为“.ui”,可以在后续的代码开发中使用。
在Qt Creator中,可以将Qt Designer设计的界面与代码进行整合。
可以通过“选择类”对话框选择一个对应的C++类,然后点击“添加”按钮以生成相关的代码。
生成的代码可以在C++中使用,可以在其中添加功能实现和事件处理等。
总结一下,Qt Designer是一个强大的界面设计工具,它能够帮助开发者快速创建图形用户界面。
开发者只需在可视化界面上拖拽控件、设置属性和关联信号槽,就可以生成界面代码。
Qt Designer还提供了布局管理和预览功能,使得界面设计更加简单和直观。
使用Qt Designer可以大大提高开发效率,减少开发时间。
第四讲使用qt designer 快速设计界面
图11 连接信号与槽函数
按照同样的操作方式,连接Login这个按钮的clicked()信号与QQLoginDlgClass的槽函数 login(),再连接Clear按钮的信号clicked()与userNameLEdit的槽函数clear()(这个函数是系 统定义的,作用是清除行编辑输入框中的内容)。一个信号可以连接到多个部件的槽函数上,我 们希望当点击Clear按钮的时候,清除用户名输入框与口令输入框的内容,因此,再次连接按钮 Clear的clicked()信号到passwordLEdit的槽函数clear()上,最后的情况是: 发送者 信号 接收者 槽函数 passwordLEdit textChanged QQLoginDlgClass enableLoginButton loginButton clicked QQLoginDlgClass login clearButton clicked usernameLEdit clear clearButton clicked passwordLEdit clear 如下图12所示:
图10 添加槽函数的声明 然后点击“确定”,回到“编辑窗口部件”模式。 现在连接信号与槽函数,单击菜单“编辑→编辑信号/槽“(或者按F4进入信号-槽编辑模 式),我们希望,当用户在口令输入框输入口令之后,让Login按钮可以enable,换句话说,不 允许空口令,我们打算在enableLoginButton函数中去enable这个Login按钮。不过,现在,首先 需要将passwordLEdit的textChanged信号与这个enableLoginButton函数连接起来,以便当用户 在这个输入框中输入口令的时候,让Login按钮enable。 连接信号与槽函数的操作就像连接文本标签与其伙伴(buddy)的操作一样, 在 “编辑信号/槽” 模式下,单击passwordLEdit行编辑输入框并按着鼠标左键,将红色的箭头拖动到窗体的空白处 (因槽函数enableLoginButton是属于主窗体的),释放鼠标按键。在弹出的“配置连接”对话框 中选择左边passwordLEdit的信号textChanged(QString) 并同时选择右边QQLoginDlgClass的槽 函数enableLoginButton(QString),然后点击“确定”即可,如下图11所示:
第三章、使用QtDesigner进行GUI设计
第三章、使⽤QtDesigner进⾏GUI设计
⼀、Designer的界⾯功能介绍
进⼊Qt Designer以后,打开或新建⼀个ui⽂件,Qt Designer窗⼝展⽰的页⾯如下图所⽰:
⽼猿将界⾯各部分使⽤红⾊数字进⾏标记,按照数字顺序各区域对应功能分别为:
1、界⾯元素控件区域
这部分提供了Qt所有可视化控件,分为8⼤类,分别为布局控件(Layouts)、分隔控件(Spacers)、按钮控件(Buttons)、表项视图(item views)、表项组件(item widgets)、容器(Containers)、输⼊组件(input widgets)、显⽰组件(Display widgets),在新建窗⼝后,可以将各种功能的组件拖拽到窗⼝上实现可视化的界⾯设计。
2、菜单及⼯具栏
本部分是各种操作菜单和对应的⼯具栏。
其中:
File菜单⽤来新建、打开、打开最近、保存界⾯的UI⽂件。
E。
pyqt designer使用
pyqt designer使用PyQt Designer 是一个用于创建图形界面的工具,它的主要功能是提供一种简单易用的方式来设计并生成 GUI 应用程序。
设计师有着直观的界面,用户可以通过拖拽以及编辑组件属性的方式来完成用户界面的设计。
可以直接在 Designer 中查看界面的效果和用户交互体验。
此外,PyQt Designer 可以方便地集成到 PyCharm 和 Qt Creator 中,使得它更加容易的在PyCharm 中进行开发和设计。
PyQt Designer 向您提供了一种集中设计图形用户界面的方法,从而节省了大量编写 GUI 应用程序代码的时间。
Designer 是一款基于 Qt 库的应用程序,界面元素和控件在创建时都可以通过 Designer 进行可视化操作,包括组件的布局、属性与事件的绑定等操作。
Designer 还提供了许多预定义的组件,包括文本框、按钮、滑动条、复选框、标签、树形结构等等。
此外,也可以通过自定义组件的方式,向 Designer 中添加您自己的专业控件,这样能够更好的适应各种应用场景。
PyQt Designer 可以产生用户界面分类(.ui)文件,并通过 uic 工具将其转换成 Python 代码,使用其中的类来编写您的应用程序。
这样,您可以非常快速地创建出可视化应用程序,极大地提高了开发效率。
总之,使用PyQt Designer 有非常多的好处,包括易于使用,能够快速创建并设计 GUI 应用程序,并且可以通过简单地拖放和编辑组件属性来完成这些任务。
同时,在 PyCharm 和 Qt Creator 中使用 Designer 还可以节省您的时间,并提供更好的视觉效果。
如果您正在寻找一种快速、可靠的方式来设计和创建用户界面,那么你不妨尝试一下PyQt Designer。
QT_designer开发
三. 嵌入式Linux的GUI程序开发3.1 编译ARM平台的Qtopia-2.2.0#cd /opt/FriendlyARM/mini2440/arm-qtopia#./build-all (该过程比较长,需要运行大概30 分钟左右)#./mktarget (制作适用于根文件系统的目标板二进制映象文件包,将生成target-qtopia-konq.tgz)说明:./build-all 将自动编译完整的Qtopia 和嵌入式浏览器,并且编译生成的系统支持Jpeg、GIF、PNG 等格式的图片,您还可以先后执行./build 和./build-konq 脚本命令分别编译它们3.2 利用QT designer开发GUI程序下面,以一个例子hi详细讲解开发GUI程序的流程。
>>开始1、进入arm-qtopia,创建工程文件夹hi2、设置开发环境,执行命令 # source qtopia-2.2.0-FriendlyARM/setQpeEnv(这一步似乎必要性不大,因为在后面的build脚本中,有这个命令)3、生成工程文件hi.pro,可直接将hello.pro中的内容拷贝过来。
4、开始设计GUI。
进入qtopia-2.2.0-FriendlyARM/qt2/bin,启动Qt designer # ./designer,即可以进行图形界面的设计。
(1)、运行Qt Designer, 选择File->New->Widget。
如下图所示。
(2)、出现一个窗体。
把它的属性 catption 修改为:Hello World~(3)、在上面添加一个按钮:修改其属性 name 为“btn1”。
Text 为“ClickMe!”:(5)、把界面文件保存为Form1.ui,放到工程目录./hi下面,退出Designer。
(6) 用文件编辑器编辑main.cpp 文件,gedit ./main.cpp即可,内容如下将此文件与hello.ui都保存在工程目录/hi下。
pythonGUI库图形界面开发之PyQt5结合QtDesigner创建信号与槽的详细方法与实例
pythonGUI库图形界⾯开发之PyQt5结合QtDesigner创建信号与槽的详细⽅法与实例在下⾯这3篇⽂章中我们给出了⼿⼯输⼊代码的信号与槽的使⽤⽅法,因为采⽤这种⽅法介绍时,会简单⼀些,如果使⽤Qt Designer来介绍这些功能,那么任何⼀个简单的功能都会使⽤xxxx.ui xxxx.py call_xxxx.py三个⽂件来实现,这样内容会显得很乱在实战应⽤中,由于Qt Designer可以很好的实现界⾯显⽰与业务逻辑分离,所有能保住我们解决⼤量的代码,如果能够使⽤Qt Designer⾃动创建⼀些信号与槽机制,那就更好了。
本例要实现的功能是:通过⼀个模拟打印的界⾯来详细说明信号的使⽤,在打印时,可以设置打印的份数,纸张类型,触发打印按钮后,将执⾏结果显⽰在右侧,通过QCheckBox(全屏预览复选框)来选择是否通过全屏模式进⾏预览,将执⾏结果显⽰在右侧按F1键可以显⽰helpmessage帮助信息第⼀步:Qt Designer⾸先,使⽤Qt Designer新建⼀个模板名为widget的简单窗⼝,通过将widget box区域的控件拖曳到窗⼝中,实现如图的界⾯效果这⾥对窗⼝控件进⾏简要说明控件类型控件名称作⽤QSpinBox numberSpinBox显⽰打印的分数QComboBox styleCombo显⽰打印的纸张类型,纸张类型包括A3,A4等QPushButton printButton连接emitPrintSiagnal函数的绑定,触发⾃定义信号printSignal的发射QCheckBox prievewState是否全屏预览QPushButton priviewButton连接emitPreviewSignal函数的绑定,触发⾃定义信号previewSignal的发射QLabel resultLabel显⽰执⾏结果第⼆步:将界⾯⽂件ui转换为py⽂件pyuic5 -o xxxxx.py xxxxx.ui会在界⾯⽂件同级⽬录下⽣成⼀个py⽂件查看所⽣成的.py⽂件,完整代码如下# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'MainWinSignalSlog02.ui'## Created by: PyQt5 UI code generator 5.8.1## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(715, 225)self.controlsGroup = QtWidgets.QGroupBox(Form)self.controlsGroup.setGeometry(QtCore.QRect(10, 20, 451, 151))self.controlsGroup.setObjectName("controlsGroup")self.widget = QtWidgets.QWidget(self.controlsGroup)self.widget.setGeometry(QtCore.QRect(10, 40, 411, 30))self.widget.setObjectName("widget")self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)self.horizontalLayout.setContentsMargins(0, 0, 0, 0)self.horizontalLayout.setObjectName("horizontalLayout")bel = QtWidgets.QLabel(self.widget)bel.setObjectName("label")self.horizontalLayout.addWidget(bel)self.numberSpinBox = QtWidgets.QSpinBox(self.widget)self.numberSpinBox.setObjectName("numberSpinBox")self.horizontalLayout.addWidget(self.numberSpinBox)self.styleCombo = QtWidgets.QComboBox(self.widget)self.styleCombo.setObjectName("styleCombo")self.styleCombo.addItem("")self.styleCombo.addItem("")self.styleCombo.addItem("")self.horizontalLayout.addWidget(self.styleCombo)bel_2 = QtWidgets.QLabel(self.widget)bel_2.setObjectName("label_2")self.horizontalLayout.addWidget(bel_2)self.printButton = QtWidgets.QPushButton(self.widget)self.printButton.setObjectName("printButton")self.horizontalLayout.addWidget(self.printButton)self.widget1 = QtWidgets.QWidget(self.controlsGroup)self.widget1.setGeometry(QtCore.QRect(10, 100, 201, 30))self.widget1.setObjectName("widget1")self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget1)self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)self.horizontalLayout_2.setObjectName("horizontalLayout_2")self.previewStatus = QtWidgets.QCheckBox(self.widget1)self.previewStatus.setObjectName("previewStatus")self.horizontalLayout_2.addWidget(self.previewStatus)self.previewButton = QtWidgets.QPushButton(self.widget1)self.previewButton.setObjectName("previewButton")self.horizontalLayout_2.addWidget(self.previewButton)self.resultGroup = QtWidgets.QGroupBox(Form)self.resultGroup.setGeometry(QtCore.QRect(470, 20, 231, 151))self.resultGroup.setObjectName("resultGroup")self.resultLabel = QtWidgets.QLabel(self.resultGroup)self.resultLabel.setGeometry(QtCore.QRect(20, 30, 191, 101))self.resultLabel.setObjectName("resultLabel")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "打印控件"))self.controlsGroup.setTitle(_translate("Form", "打印控制"))bel.setText(_translate("Form", "打印份数:"))self.styleCombo.setItemText(0, _translate("Form", "A3"))self.styleCombo.setItemText(1, _translate("Form", "A4"))self.styleCombo.setItemText(2, _translate("Form", "A5"))bel_2.setText(_translate("Form", "纸张类型:"))self.printButton.setText(_translate("Form", "打印"))self.previewStatus.setText(_translate("Form", "全屏预览"))self.previewButton.setText(_translate("Form", "预览"))self.resultGroup.setTitle(_translate("Form", "操作结果"))self.resultLabel.setText(_translate("Form", "<html><head/><body><p><br/></p></body></html>"))第三步:新建调⽤窗⼝为了使窗⼝的显⽰与业务逻辑分离,在建⼀个调⽤窗⼝显⽰的⽂件,在调⽤类中添加多个⾃定义信号,并与槽函数进⾏绑定,其完整代码如下# -*- coding: utf-8 -*-import sysfrom PyQt5.QtWidgets import QApplication, QMainWindowfrom jia_07 import Ui_Formfrom PyQt5.QtCore import pyqtSignal, Qtclass MyMainWindow(QMainWindow, Ui_Form):helpSignal = pyqtSignal(str)printSignal = pyqtSignal(list)# 声明⼀个多重载版本的信号,包括了⼀个带int和str类型参数的信号,以及带str参数的信号previewSignal = pyqtSignal([ int, str ], [ str ])def __init__( self, parent=None ):super(MyMainWindow, self).__init__(parent)self.setupUi(self)self.initUI()def initUI( self ):self.helpSignal.connect(self.showHelpMessage)self.printSignal.connect(self.printPaper)self.previewSignal[ str ].connect(self.previewPaper)self.previewSignal[ int, str ].connect(self.previewPaperWithArgs)self.printButton.clicked.connect(self.emitPrintSignal)self.previewButton.clicked.connect(self.emitPreviewSignal)# 发射预览信号def emitPreviewSignal( self ):if self.previewStatus.isChecked() == True:self.previewSignal[ int, str ].emit(1080, " Full Screen")elif self.previewStatus.isChecked() == False:self.previewSignal[ str ].emit("Preview")# 发射打印信号def emitPrintSignal( self ):pList = [ ]pList.append(self.numberSpinBox.value())pList.append(self.styleCombo.currentText())self.printSignal.emit(pList)def printPaper( self, list ):self.resultLabel.setText("打印: " + "份数:" + str(list[ 0 ]) + " 纸张:" + str(list[ 1 ]))def previewPaperWithArgs( self, style, text ):self.resultLabel.setText(str(style) + text)def previewPaper( self, text ):self.resultLabel.setText(text)# 重载点击键盘事件def keyPressEvent( self, event ):if event.key() == Qt.Key_F1:self.helpSignal.emit("help message")# 显⽰帮助消息def showHelpMessage( self, message ):self.resultLabel.setText(message)self.statusBar().showMessage(message)if __name__ == "__main__":app = QApplication(sys.argv)win = MyMainWindow()win.show()sys.exit(app.exec_())运⾏程序,显⽰效果如图代码分析在上⾯的例⼦中,通过PyQtSignal()定义了三个信号,⼀个str参数类型的信号,⼀个list类型参数类型的信号,⼀个多重载版本的信号,包括⼀个int和str类型参数的信号,以及带str类型参数的信号helpSignal = pyqtSignal(str)printSignal = pyqtSignal(list)# 声明⼀个多重载版本的信号,包括了⼀个带int和str类型参数的信号,以及带str参数的信号previewSignal = pyqtSignal([ int, str ], [ str ])对于绑定信号与槽,这⾥着重说明多重版本的信号绑定,prieviewSignal有两个版本,即previewSignal(str)和prievewSignal(int ,str),由于两个版本,因此在绑定的时候,需要显⽰指定信号与槽的绑定self.helpSignal.connect(self.showHelpMessage)self.printSignal.connect(self.printPaper)self.previewSignal[ str ].connect(self.previewPaper)self.previewSignal[ int, str ].connect(self.previewPaperWithArgs)在Qt的机制中,根据所传递信号的参数类型和个数,连接到不同的槽函数def emitPreviewSignal( self ):if self.previewStatus.isChecked() == True:self.previewSignal[ int, str ].emit(1080, " Full Screen")elif self.previewStatus.isChecked() == False:self.previewSignal[ str ].emit("Preview")信号发射可以传递python数据类型的参数,本例中的printSignal信号可以传递list类型的参数plistdef emitPrintSignal( self ):pList = [ ]pList.append(self.numberSpinBox.value())pList.append(self.styleCombo.currentText())self.printSignal.emit(pList)通过复写KeyPressEvent()⽅法,对F1键进⾏功能扩展,这⾥通过复写keyPressEvent()⽅法模拟发射所需的信号,来完成对应的任务def keyPressEvent( self, event ):if event.key() == Qt.Key_F1:self.helpSignal.emit("help message")本⽂主要讲解了PyQt5结合Qt Designer创建信号与槽的详细⽅法与实例,另外⼀篇关于PyQt5结合Qt Designer创建信号与槽的⽂章⼤家也可以结合阅读下,更多关于 PyQt5信号与槽的知识请查看下⾯的相关链接。
《嵌入式系统开发》课程设计基于QT的数码相框设计和实现
《嵌入式系统开发》课程设计基于QT的数码相框设计和实现基于QT的数码相框设计与实现摘要随着现代科学技术的飞速发展,人类历史即将进入一个崭新的时代。
嵌入式Linux系统已经越来越贴进我们的生活,Linux是最受欢迎的自由电脑操作系统内核。
它是一个用C语言和汇编语言写成,符合POSIX标准的类Unix操作系统。
嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。
嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。
本文简要介绍在Linux平台上基于QT编译数码相框,其中运用到了嵌入式Linux内核以及Qt/Embedded嵌入式图形用户界面的技术特点,并重点介绍应用Qt/Embedded移植一个图形界面程序到Mini2440实验板的过程,其中Mini2440实验板,采用S3C2440AL芯片,及Linux2.6.13内核。
关键词 Linux Qt/Embedded QT 嵌入式 S3C2440ALCompile using qt based on Linux platform digital photo frameAbstract The modern age rapid development of science and technology, and human history is about to enter a new era. Embedded Linux system has been more and more close to our life, Linux is the most popular free computer operating system kernel. It is a C language and in assembly language, accord with the POSIX of Unix operating system. Embedded Linux is will increasingly popular Linux operating system, can cut out modification in embedded computer system running on an operating system. Embedded Linux inherits the Internet on unlimited resources, and open source operating system has the characteristics of embedded. This paper briefly introduces the Linux platform based on QT in the digital photo frame, compiled using the Embedded Linux kernel and QT to Microwindows/Embedded security, such as graphical user interface Embedded the technical characteristics, and introduced the key application QT/Embedded security transplant a GUI application to Mini2440 experiment board process, in which Mini2440 experiment board, use S3C2440AL chip, and Linux2.6.13 kernel.Keywords Linux Qt/Embedded QT S3C2440AL目录1. 前言 ........................................................................... (1)1.1 研究背景............................................................................ ............................. 1 1.2 研究目的和意义............................................................................ ................. 22. 嵌入式系统和嵌入式Linux ........................................................................ . (3)2.1 嵌入式系统概述............................................................................ ................. 3 2.2 嵌入式linux ........................................................................ ........................... 4 2.3 嵌入式Linux的特点和优势 (4)2.4嵌入式linux内核 ........................................................................... .. (6)2.4.1 linux内核描述 ..........................................................................6 2.4.2 linux内核系统体系结构 (7)3. 嵌入式Linux系统GUI设计分析 (8)3.1 图形用户界面概述............................................................................ ............. 8 3.2 嵌入式系统的GUI简介 ........................................................................... ..... 9 3.3 GUI的组........................ 10 3.4 Qt/Embedded分析 ........................................................................... . (11)3.4.1 Qt/Embedded的工作模式 ....................................................... 11 3.4.2Qt/Embedded中客户端/服务器通信方式 (12)4 QT技术 ........................................................................... . (13)4.1 QT的优势 ........................................................................... ......................... 13 4.2 QT图形用户界面 ........................................................................... ............. 13 4.3 QT Creator的特点以及优势 (14)5 软硬件开发环境 ........................................................................... (15)5.1开发板Mini2440介绍 ........................................................................... . (15)5.1.1 Mini2440特点 (15)- III -5.1.2 Mini2440开发板硬件资源主要特性 ....................................... 16 5.2芯片S3C2440L简介 ........................................................................... .......... 16 5.3虚拟机概述 ........................................................................... ......................... 17 5.4 Linux内核和yaffs文件系统移植 ............................................................... 17 6 数码相框程序的移植过 (20)6.1 移植QT ........................................................................... (20)6.1.1 QT源代码编译 (20)6.1.2 交叉编译 ........................................................................... ...... 20 6.2 程序开发环境............................................................................ .. (21)6.2.1 制定程序框架 ..........................................................................21 6.2.2编辑调试程序 ..........................................................................21 6.3 各个功能的程序设计............................................................................ .. (23)6.3.1 声明主要函数库 (23)6.3.2 按钮的响应函数 (24)6.4 设计成果............................................................................ ............................ 27 6.5 程序移植到ARM机上失败的原因分析 ..................................................... 28 7 结论 ........................................................................... ............................................... 29 参考文献 ........................................................................... (30)- IV -基于QT的数码相框设计与实现1. 前言21世纪,随着现代科学技术的飞速发展,人类历史即将进入一个崭新的时代──信息时代。
嵌入式系统软件设计嵌入式GUI概述
GTK提供了大量的主题和图标,允许开发者根据需要进行高度定 制。
广泛的社区支持
GTK拥有庞大的开发者社区,遇到问题可以快速得到解决。
基于WinForms的嵌入式GUI
01
与Windows系统紧密集成
WinForms是微软开发的GUI库,与Windows系统紧密集成,可以充分
利用Windows系统的特性。
嵌入式GUI应具备良 好的可扩展性,以适 应不同的硬件平台和 操作系统。
使用标准化的技术和 接口,以便与其他组 件和系统集成。
设计时应考虑模块化 和可定制性,以便根 据需要进行功能扩展 或定制。
03
嵌入式GUI的主要组件
窗口系统
01
02
03
窗口系统是嵌入式GUI的基础, 负责管理窗口的创建、销毁、布 局和交互等操作。
特点
轻量级、占用资源少、实时性、可定 制性、跨平台兼容性。
嵌入式GUI的应用领域
01
智能家居
控制家电设备、照明、安全系统等。
医疗设备
显示医疗图像、控制医疗设备等。
03
02
工业自动化
监控生产过程、控制机械设备等。
汽车电子
车载信息娱乐系统、仪表盘显示等。
04
嵌入式GUI的发展趋势
跨平台兼容性
随着物联网的发展,嵌 入式GUI需要支持多种 操作系统和硬件平台。
使用可靠的技术和工具进行GUI开发,如使用经过验证的图形库
03
和框架。
资源限制
01
嵌入式系统通常具有有限的资源,如内存、处理器速
度和存储空间。
02
GUI设计应考虑到这些限制,并优化资源使用,如减
少内存占用、降低处理器负载和提高存储效率。
Qt Designer快速入门
几行代码轻松做上位机界面Qt Designer快速入门小教程By Exilefox 2012年3月28日做嵌入式的各位想必或多或少都听说过Qt,各种优点不细数了,简单的说这就是个做界面的IDE。
我发现很多Qt的教程都是用代码来编写界面程序,有没有图形化的方法呢!答案就是Qt Designer打个比方,用代码写界面就像是你用记事本一行行的敲HTML代码,用Qt Designer 写界面就很类似用FrontPage或者DreamWeaver,拖些控件,调整一下位置、属性,补些css 效果,一个轻松的页面就出来了此文意在引导初学者使用Qt Designer快速的入门编写界面,不关心底层的c++实现,总共只用敲几行代码新建工程开始,如图选择,然后一路next。
我就不多说了工程建立好后来看看工程的结构点击ui文件就可以切换到设计窗口,我们的ui设计主要就是在这里完成的,让我们看看结构在左边的是控件栏,里面的控件(如我们将用到的按钮、框架等)可以直接拖拽到中间的窗口编辑区。
各位有兴趣可以自己把他们一一拖出来,然后按shift+alt+R预览,看看是做什么功能的,我就不一一详述了(其实有些我也没用过,呵呵)。
因为我们再之前建立工程时候默认的是Mainwindow类型,所以这个窗口一开始就自带了顶部菜单,顶部图标栏,底部状态栏等,各位想要干净点的可以在创建时试试其他类型。
右上的显示的是从属结构,右下显示的是某个部件的属性。
底部的是信号与槽编辑窗口,信号与槽的编辑方式有4种:拖拽、在编辑窗口添加,右键“转到槽”,在C++代码中用connect函数,在此只演示右键“转到槽”熟悉了场地再描述一下我们要做的这个界面左侧3个按钮,点击就分别跳到右侧对应三个页面,每个页面有一幅图、一段文字。
这只是个简单演示,你可以想象一下用这类型的模板可以做功能很丰富的交互界面了,比如通信录,第一页换成添加联系人,输入各种信息,第二页换成联系人列表,ok,大家自由发挥。
嵌入式Linux用Qt Designer快速开发
嵌入式Linux用Qt Designer快速开发
陈海如
【期刊名称】《开放系统世界》
【年(卷),期】2004(000)003
【摘要】RAD(快速应用程序开发)是一种高效的软件开发形式,可以让用户在极短的时间里创建一个图形化的用户界面。
通常情况下,在一张空白的表单上,开发人员可以通过拖拉或点击的方式,在窗口的适当位置上添加一些输入框和按钮等窗口组件。
这时,RAD工具会自动编写和维护代码。
而用户所要做的只是确定当点击按钮或选择选单选项时将要发生什么事件。
【总页数】3页(P84-86)
【作者】陈海如
【作者单位】无
【正文语种】中文
【中图分类】TP316.81
【相关文献】
1.SYBASE技术服务园地连载(56)利用PowerDesigner快速开发Replication Server应用的实践(一) [J], 储网林
2.利用PowerDesigner快速开发Replication Server应用的实践(续) [J], 储网林
3.用QT Designer来快速学习QT(二) [J], 李蕤
4.用QT Designer来快速学习QT(三) [J], 李蕤
5.用QTDesigner来快速学习QT(一) [J], 李蕤
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用QT Designer快速开发嵌入式系统gui用QT Designer快速开发嵌入式系统gui类别:嵌入式系统用QT Designer快速开发嵌入式系统guiRAD(快速应用程序开发)是一种高效的软件开发形式,可以让用户在极短的时间里创建一个图形化的用户界面。
通常情况下,在一张空白的表单上,开发人员可以通过拖拉或点击的方式,在窗口的适当位置上添加一些输入框和按钮等窗口组件。
这时,RAD工具会自动编写和维护代码。
而用户所要做的只是确定当点击按钮或选择选单选项时将要发生什么事件。
在Linux下,一个非常流行的RAD工具就是Qt Designer。
它是嵌入式公司Trolltech的Qt软件包的一个组成部分。
如果用户使用的是KDE桌面,那么Qt已经自动安装上了,Qt Designer也很有可能已经被安装好。
如果用户的系统没有安装,那么针对不同的版本,可以很方便地找到KDE Development Tools,并安装之。
以Red Hat 9.0为例,用户可以从主选单→系统设置→添加/删除应用程序中选择KDE软件开发,即可完成Qt Designer的安装(如图1所示)。
图1 安装Qt Designer创建为了快速地向大家展示一下Qt Designer功能,先创建一个简单的摄氏温度和华氏温度的转换程序。
本文里将设计一个简单的GUI,并且添加一些简单的代码来实现温度的转换。
因为是为了展示一下快速的开发过程,而不是一个严谨的软件项目的开发,所以这里不会进行任何的错误检查,也不进行输入检验(也就是检查用户的输入是否为合法的温度形式)、缓冲溢出检查等在日常软件开发中一定要做的步骤。
如果用户使用的是KDE,那么选单上应该已经有Qt Designer的图标。
不同的发行版,图标的位置会有所不同。
如果用户的发行版没有Qt Designer图标,那么可以在命令行模式下输入“designer”命令来启动该开发工具。
在Red Hat 9.0中,可以通过点击主选单→编程→更多编程工具→Qt Designer来启动(如图2)。
图2 启动Qt DesignerQt Designer首先呈现给用户的是一个New/Open对话框(如图3所示)。
因为这里要创建一个C++程序,所以在此选择C++ Project,点击“OK”继续。
图3 New/Open对话框选择一个想要保存文件的位置,并且给出一个文件名,在此使用的文件名是cfconv。
注意这里文件名的扩展名一定要是.pro。
点击“Save”后,返回到了Project Settings对话框(见图4)。
图4 保存文件图5 Qt Designer主窗口现在就已经在Qt Designer主窗口上了(见图5),确保Property Editor可见。
如果它是不可见的,用户可以通过Windows→Views→PropertyEditor/Signal Handlers选单选项来使其可见(缺省情况下是可见的)。
图6 创建一个新的表单图7 更改表单的属性通过选择File→New选单,然后选择Dialog来创建一个新的对话框。
这时Qt Designer会创建一个新的空白表单(见图6),用户可以在其上放置输入框和按钮。
打开Property Editor(见图7),把name的值改为“cfconvMainForm”,把caption的值改为“Celsius to Fahrenheit Converter”。
这里表单的name是被应用程序使用的内部名字,在用户编写代码时,有时需要使用的就是这个名字。
Caption指的是要在标题栏上显示的名字。
从左边的工具箱中选择Common Widgets,并且双击“TextLabel”。
在表单的左上角放置一个标签,在这个标签位置下方再放置一个同样的标签。
选中上面的标签,并且将其text值改为“Celsius”,相应地把第二个标签的text值也改为“Fahrenheit”。
在这两个标签的后面加上两个对应的输入框,用于输入需要转换的温度和输出转换后的温度。
从Common Widgets中双击选择LineEdit,然后在两个标签后创建两个LineEdit。
把两个LineEdit框的name值分别改为“celsiusLineEdit”和“fahrenheitLineEdit”,再把fahrenheitLineEdit文本框的readOnly属性改为True。
从Common Widgets上选择PushButton,并且创建两个按钮,分别将其name和text属性改为quitPushButton和Quit、convertPushButton和Convert。
这时表单看起来就如图8所示。
图8 基本完成的GUI现在按“Ctrl+S”或从选单中选择File→Save,接下来要求输入文件名。
缺省情况下,使用的是表单的name值,扩展名使用的是.ui。
用户可以接受这个名字,然后点击“Save”。
如果想看一看效果,用户可以按“Ctrl+T”或从选单中选择Preview→Preview Form来预览应用程序。
但是现在按钮还不能做任何事情,所以下一步要做的事情就是让按钮和某一特定的动作相关联。
当点击“Quit”按钮时,要求应用程序会被关闭;而当点击“Convert”按钮时,要求输入的温度由摄氏温度转换为华氏温度。
在“Quit”按钮上点击右键,选择Connections,然后点击“New”。
从Sender列表中选择quitPushButton,从Signal列表中选择clicked(),从Receiver列表中选择cfconvMainFrom,从Slot列表中选择close()。
用户可以参见图9所示。
图9 为Quit按钮创建关联现在,当用户点击“Quit”按钮时,会向表单发送一个鼠标点击的信号,这将使这个表单关闭(因为这个表单是主表单,所以它关闭时应用程序也就同时关闭了)。
要进行测试,可以选择Preview→Preview Form。
这时点击“Quit”按钮,预览窗口就会被关闭。
下面为“Convert”按钮创建连接。
在“Convert”按钮上点击右键,然后选择Connections。
这时用户会发现这是一个全局连接窗口,而不是某一窗口部件的连接。
点击“New”来创建一个新的连接。
从Sender列表中选择convertPushbButton,从Signal列表中选择clicked(),从Receiver列表中选择cfconvMainFrom。
本想将该按钮与fahrenheitLineEdit窗口部件相关联,但列表中却没有一个可以满足这项要求的栏目。
因此需要创建一个新的栏目来完成这个连接。
图10 创建新的栏图11 完成连接创建点击“Edit Slots”和“New Function”(见图10),把函数名改为convert(),其它的值可以保持不变,点击“OK”来关闭窗口。
要完成这个连接,从Slot列表中选择convert()(见图11)。
现在来完成应用程序的代码部分:创建convert()函数。
在Project Overview窗口点击“cfconvmainform.ui.h”来启动Code Editor。
此时convert()函数实际上已经存在了,只不过是空的罢了。
输入下面的C++代码来完成函数: void cfconvMainForm::convert() {/* Declare some variables */doublecelsius_input, result = 0;/* Retrieve Celsius input */celsius_input = celsiusLineEdit->text().toDouble();/* Convert to Fahrenheit */result = (celsius_input *(9.0/5.0)) + 32.0;/* Enter result and clear Celsius input box */fahrenheitLineEdit->setText(QString::number(result, 'f',1));celsiusLineEdit->clear();}现在就已经基本完成这个应用程序了。
不过在编译和运行此应用程序之前,还要创建一个main.cpp文件。
方法是选择File→New→C++Main-File(main.cpp),只需接受缺省的配置即可。
main.cpp 会自动在Code Editor中打开。
因为这里无需改变main.cpp中的任何东西,所以直接将Code Editor窗口关闭,并且保存main.cpp。
这时也同时关闭cfconfMainForm.ui.h Code Editor窗口。
编译到此为止,在Qt Designer 中的工作已经完成了。
保存整个项目,下面来编译和运行这个程序。
在编译程序之前,要首先生成它的Makefile文件。
打开一个终端,然后切换至保存有项目的位置,使用以下命令来生成Makefile文件:#qmake -o Makefile cfconv.pro 现在,就可以运行make来编译程序了,根据系统的性能,这个步骤需要花费一点时间。
当编译工作完成后,输入./cfconv来运行程序。
如果一切正常,用户应该已经看到程序了。