Qt5开发及实例 14章 多国语言国际化
用C~(++) Builder开发多国语言用户界面程序
l 多 国语 言 用户 界 面程 序 设计
11 使 用 Reo reDL i r 来 实 现 . su c L W z d a
在前 面 的工 作 中 ,该 程 序的语 种 可 以做 到 与操 作 系统 一 致 , 有些 时候 , 但 如有外 挂支持 其他语 种 的平 台时 , 我们 可能 希 望 应用 软件 支持 与 操作 系统 不 同的语 种 , ”B i e 也 提供 了 C ul r d 动 态多语种 之 间的切换 功能 。 其具 体实 现可根据 不 同使 用要 求
为 了实 现语 种切 换 . 们在 编 写该 应用 程 序 时 , 我 在项 目中
添 加 一 个 位 于 C B i e 安 装 目 录 的 sm lsa p/ ih dt ul r d a pe/ p sR cE i 子 目录 下 的 R lip s ent a ,在 该 文 件 中 实 现 了 几 个 用 于 动 态 语 种 .
摘 要 : 用 C B i e 来 开 发 多 国语 言 界 面 应 用 程 序 , 户 无 须 重 新 编 译 即 可 方 便 快 速 地 实 现 界 面 和 数 据 的 多语 利 ul r d 用 言切 换 显 示 。详 细 介 绍 了使 用 C ule ”B i r自行 提 供 的 方 法及 有 关控 件 的 两 种 实 现 方 法 , 给 出 了一 个 可 动 态 添 加 多 d 并
而有 所不 同 。下 面举一个 简单 的例 子 , 该程序 有一 个选 择语种
的菜单 , 我们 要求 做 到在 菜单 中选 择 不 同语种 时 , 序 的界 面 程
能切换 到相应 的语种 。
L nu g 列表框中选择相应的语种 , ag ae 然后单击 N x按钮, et 直至结束。 这 时 C ule 将 自动建 立一 个 DL B i r d L项 目,该项 目包 含 了所 有 的表 单和一 个资 源文件 。我们可 以方便 地进行 修改 , 使 各项 显示信 息 如表单 和控 件 的 C pi a t n与 H n 等 属性 、 源 文 o it 资 件 中的 串表 等 内容 换成相 应 的语 言表示 。
Qt 5开发及实例 第14章 Qt 5操作Office实例
其中,document是一个表示当前活动文档的QAxObject对象。 同样,在使用完Word文档之后也要进行释放资源和关闭进程的善后处理,如下: document->dynamicCall("Close()"); myword->dynamicCall("Quit()"); //关闭文档 //退出进程
这样,就实现了对Excel各个级别对象的灵活操作和使用。 为避免资源无谓消耗和程序死锁,通常在编程结束时还必须通过语句释放该Excel进程所占据的 系统资源,如下:
workbook->dynamicCall("Close()"); myexcel->dynamicCall("Quit()"); //关闭工作簿 //退出进程
序 号 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ label InExcelLineEdit writeExcelPushButton readExcelPushButton OutExcelLabel label_2 InWordLineEdit writeWordPushButton readWordPushButton OutWordLabel 名 称 类 型 QLabel QLineEdit QPushButton QPushButton QLabel QLabel QLineEdit QPushButton QPushButton QLabel 属性设置 text: Excel 读写; font: 微软雅黑,12 text: 我爱最新的 Qt 5.11 text: 写 入
对电子表格的基本读写,在构造方法中添加如下代码:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); myexcel = new QAxObject("Excel.Application"); myworks = myexcel->querySubObject("WorkBooks"); myworks->dynamicCall("Add"); workbook = myexcel->querySubObject("ActiveWorkBook"); mysheets = workbook->querySubObject("Sheets"); }
qt开发实例
qt开发实例QT开发实例QT是一款跨平台的C++应用程序开发框架,它提供了丰富的类库和工具,可以帮助开发者快速开发高质量的应用程序。
本文将介绍几个常见的QT开发实例,包括窗口应用程序、控制台应用程序、网络应用程序和数据库应用程序。
一、窗口应用程序窗口应用程序是QT中最常见的一种应用类型。
通过QT Creator可以轻松创建窗口应用程序,并且可以使用QT Designer来设计用户界面。
下面是一个简单的窗口应用程序示例:1. 创建一个新项目:在QT Creator中选择“File”->“New File or Project”,然后选择“Qt Widgets Application”模板。
2. 设计用户界面:使用QT Designer来设计用户界面,例如添加按钮、标签、文本框等控件。
3. 编写代码:在MainWindow.cpp文件中编写代码来处理用户交互事件。
例如,当用户点击按钮时,可以触发一个函数来执行特定操作。
二、控制台应用程序控制台应用程序是一种没有图形界面的命令行工具。
它通常被用于批处理任务或系统管理任务。
下面是一个简单的控制台应用程序示例:1. 创建一个新项目:在QT Creator中选择“File”->“New File or Project”,然后选择“Qt Console Application”模板。
2. 编写代码:在main.cpp文件中编写代码来处理命令行参数和执行任务。
例如,可以使用QT提供的QProcess类来执行外部命令。
三、网络应用程序网络应用程序是一种可以通过网络连接到远程服务器或其他设备的应用程序。
QT提供了丰富的类库和工具来帮助开发者创建网络应用程序。
下面是一个简单的网络应用程序示例:1. 创建一个新项目:在QT Creator中选择“File”->“New File or Project”,然后选择“Qt Widgets Application”模板。
如何进行代码国际化以适应不同语言环境
如何进行代码国际化以适应不同语言环境代码国际化是指对软件代码进行修改和调整,使其能够适应不同的语言环境和文化习惯。
随着全球化的发展,越来越多的软件需要适应不同的语言和地区,因此,代码国际化变得越来越重要。
本文将介绍如何进行代码国际化,以帮助开发人员更好地适应多种语言环境。
一、使用国际化字符串国际化字符串是指在代码中使用站位符代替直接使用文本,这样可以方便地替换不同语言环境下的文本内容。
开发人员可以将所有需要翻译的文本提取出来,放在一个翻译文件中,然后根据不同语言环境加载对应的翻译文件。
这样,在切换语言环境时,代码只需要替换翻译文件,而不需要修改代码本身。
例如,代码中的一个提示信息可以使用如下的方式表示:```String message = NSLocalizedString("Hello, World!", null);```其中,"Hello, World!"是一个国际化字符串,在加载对应的翻译文件后,会将其替换为具体的文本。
二、使用本地化时间和日期格式时间和日期格式在不同的语言和地区中常常存在差异。
为了适应不同的语言环境,开发人员需要使用本地化的时间和日期格式,而不是固定的格式。
对于Java开发人员来说,可以使用java.time.format包中的DateTimeFormatter类来进行本地化的时间和日期格式化。
例如,要将一个日期格式化为本地化的字符串,可以按照以下方式进行操作:```DateTimeFormatter formatter =DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(Local e.getDefault());String formattedDate = formatter.format(LocalDate.now());```其中,ofLocalizedDate()方法用于指定日期的样式,withLocale()方法用于指定语言和地区。
Qt5开发及实例(第2版)-第5章Qt
void ImgProcessor::ShowOpenFile() { fileName =QFileDialog::getOpenFileName(this); if(!fileName.isEmpty()) { if(showWidget->text->document()->isEmpty()) { loadFile(fileName); } else { ImgProcessor *newImgProcessor =new ImgProcessor; newImgProcessor->show(); newImgProcessor->loadFile(fileName); } } }
5.1.3 菜单与工具栏的实现
将程序中用到的图片保存到该工程下的debug文件夹中,运行程序,结果如 图5.3所示。
5.2 Qt 5文件操作功能
5.2.1 新建文件
下面将介绍如何实现新建一个空白文件的功能。 (1)打开“imgprocessor.h”头文件,添“protected slots:”变量: protected slots: void ShowNewFile(); (2)在createActions()函数的“"新建"动作”最后添加事件关联: connect(NewFileAction,SIGNAL(triggered()),this,SLOT(ShowNewFile())); (3)实现新建文件功能的函数ShowNewFile()如下: void ImgProcessor::ShowNewFile() { ImgProcessor *newImgProcessor =new ImgProcessor; newImgProcessor->show(); }
pyqt5 python 案例
pyqt5 python 案例1. PyQt5入门案例:创建一个简单的窗口在PyQt5中,可以使用QWidget类创建一个简单的窗口。
以下是一个简单的示例代码,可以创建一个空白的窗口。
```pythonimport sysfrom PyQt5.QtWidgets import QApplication, QWidgetif __name__ == '__main__':app = QApplication(sys.argv)window = QWidget()window.setWindowTitle('简单窗口')window.setGeometry(100, 100, 300, 200)window.show()sys.exit(app.exec_())```2. PyQt5案例:添加按钮和标签在PyQt5中,可以使用QPushButton和QLabel类来创建按钮和标签。
以下是一个示例代码,创建一个窗口,其中包含一个按钮和一个标签。
```pythonimport sysfrom PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabeldef button_clicked():label.setText('按钮被点击了!')if __name__ == '__main__':app = QApplication(sys.argv)window = QWidget()window.setWindowTitle('按钮和标签')window.setGeometry(100, 100, 300, 200)button = QPushButton('点击我', window)button.setGeometry(100, 50, 100, 30)button.clicked.connect(button_clicked)label = QLabel('标签', window)label.setGeometry(100, 100, 100, 30)window.show()sys.exit(app.exec_())```3. PyQt5案例:创建一个简单的登录窗口在PyQt5中,可以使用QLineEdit、QPushButton和QMessageBox类来创建一个简单的登录窗口。
第5章 使用Qt基本GUI工具
如果你是自己采用编译源代码的方式安装 Qt,并且没有设置快捷方式的话,你可以从 命令行启动 Qt Designer。方法是进入到命令行方式,或者打开一个终端,进入你 Qt 安装 的目录,以笔者的 Red Flag 为例,进入 /usr/bin/目录,输入 ./designer-qt4,即可启 动 Qt Designer。
注意,不同的 Linux 发行版的菜单设置以及可执行文件命名可能会有所不同。
3.设置 Qt Designer
启动 Qt Designer 后,首先需要需要对它进行设置。
Qt Designer 支持两种界面排列形式:一种是多个顶极窗口并列分布形式;一种是与
Windows 上常见的 IDE 类似的单窗口(即多停靠窗锚接)形式。 多个顶级窗口的样子如图 5-2 所示,Qt Designer 的各个子窗口都作为独立的顶级窗口
名称与图标
功能
新建窗体
打开窗体 保存窗体
表 5-3 示出了编辑工具栏功能说明。
表 5-3 编辑工具栏功能说明
名称与图标
功能
撤销上一次操作
恢复操作
剪切 复制 粘贴 放到后面 放到前面 编辑窗口部件 编辑信号/槽 编辑伙伴 编辑标签顺序
表 5-4 示出了窗体布局工具栏功能说明。
表 5-4 窗体布局工具栏功能说明
表 5-5 窗口部件的属性设置
部件类别
objectName
text(WindowTitle)
Widget
myForm
布局示例
Label
label_name
姓名
Label
label_phone
电话
LineEdit
lineEdit_name
python中qt5用法
python中qt5用法Qt是一个用于开发GUI应用程序的跨平台框架,它提供了丰富的库和工具,使得开发者可以轻松地创建美观、易用的应用程序。
Qt5是Qt框架的最新版本,提供了许多新功能和改进,使得开发者可以更加高效地开发应用程序。
一、安装Qt5库要使用Python中的Qt5,首先需要安装Qt5库。
可以通过安装PyQt5包来实现。
PyQt5是一个Python绑定库,它提供了Qt5库的大部分功能,使得Python开发者可以轻松地使用Qt5库来开发GUI应用程序。
在Linux上,可以使用包管理器来安装PyQt5。
例如,在Ubuntu 上可以使用以下命令来安装PyQt5:```shellsudoapt-getinstallpython3-pyqt5```在Windows上,可以从PyQt5官方网站下载安装程序,并按照说明进行安装。
二、创建GUI应用程序使用PyQt5创建GUI应用程序非常简单。
首先,需要导入PyQt5模块,并创建一个QWidget对象作为主窗口。
然后,可以使用布局、控件和事件处理函数来构建GUI界面。
以下是一个简单的示例程序,它创建一个包含一个标签和一个按钮的主窗口:```pythonimportsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QLabel,QPus hButtonclassExample(QWidget):def__init__(self):super().__init__()self.initUI()definitUI(self):self.setGeometry(300,300,300,200)self.setWindowTitle('PyQt5Example')label=QLabel('Hello,PyQt5!',self)label.move(100,100)btn=QPushButton('Quit',self)btn.clicked.connect(QApplication.instance().quit)btn.move(100,40)self.show()if__name__=='__main__':app=QApplication(sys.argv)ex=Example()sys.exit(app.exec_())```这个程序创建了一个包含一个标签和一个按钮的主窗口。
移动应用开发中的移动端国际化与多语言处理指南
移动应用开发中的移动端国际化与多语言处理指南在移动互联网时代,移动应用的发展势头不可阻挡。
然而,随着应用的普及和用户的多样性,如何打造一个能够适应全球用户的应用成为了一个关键的问题。
移动端国际化与多语言处理成为了移动应用开发不可忽视的方面。
一、为什么需要进行移动端国际化与多语言处理?随着移动应用的全球化发展,越来越多的用户来自不同的国家和地区,使用不同的语言。
如果应用只支持一种语言,将无法满足全球用户的需求,降低用户黏性和使用体验,进而影响应用在全球市场的竞争力。
因此,进行移动端国际化与多语言处理是必不可少的。
二、移动端国际化的基本原则1. 设计灵活多样的布局:在进行设计时,应采用灵活多样的布局,以适应不同语言的文字长度和排列习惯。
例如,英语通常是从左到右的水平排列,而阿拉伯语则是从右到左的,这需要在设计和布局上进行充分考虑。
2. 采用字体和图标的替代方案:不同语言的字母、文字符号和表情符号可能存在差异,因此,在设计时应谨慎选择字体和图标,确保能够适应不同语言的需求。
同时,还需避免使用与某一特定地区或文化相关的图标,以避免造成误解和冲突。
3. 支持多语言的数据存储:为了实现多语言的切换和显示,应将不同语言的文本、标签和其他需要国际化的内容进行统一管理和存储。
可以将这些数据存储在资源文件中,以便根据用户语言的设置来读取和显示相应的内容。
三、多语言处理的关键步骤1. 多语言资源文件管理:首先,需要创建针对不同语言的资源文件。
这些资源文件包含了应用中使用的各种文本、标签和其他需要国际化的内容。
根据语言的不同,分别创建相应的资源文件,并将对应语言的内容填写进去。
2. 语言切换的实现:为了实现多语言切换的功能,可以在应用的设置页面添加一个选项,让用户可以自由选择所需的语言。
通过监听用户的选择,将应用的语言设置为用户选择的语言,并即时更新应用界面的显示内容。
3. 去除硬编码的文本:为了实现多语言显示的灵活切换,需要将应用中的硬编码文本替换为资源文件中的对应文本。
Qt5开发及实例
选中Qt设计器“控件”→“视图”中的全部选项,在Qt设计器的主界面上可以 看到设计器提供的一些编辑工具子窗口(如图1.11所示)。
对象查看器(Object Inspector):列出了界面中所有窗口部件,以及各窗 口部件的父子关系和包容关系。
属性编辑器(Property Editor):列出了窗口部件可编辑的属性。 Action编辑器(Action Editor):列出了为窗口部件设计的QAction动作, 通过“添加”或“删除”按钮可以新建一个可命名的QAction动作或删除指定的 QAction动作。 信号和槽编辑器(Signals & Slots Editor):列出了在Qt设计器中关联的 信号和槽,通过双击列中的对象或信号/槽,可以进行对象的选择和信号/槽的选择。
在Qt程序开发过程中,除了可以通过手写代码实现软件开发功能外,还可以通 过Qt的GUI界面设计器(Qt Designer)进行界面的绘制和布局。
Qt Designer界面如图1.11所示。
进入Qt设计器主界面后,看到的中间部分(如图1.12所示)就是将要设计的顶 层窗口部件(顶层窗口部件是其他子窗口部件的载体)。
Qt支持的平台有: Windows—XP、Vista、Win7、Win8、Win2008、Win10。 UNIX/X11—Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、 SGI IRIX、FreeBSD、BSD/OS和其他很多X11平台。 Macintosh—Mac OS X。 Embedded—有帧缓冲(framebuffer)支持的嵌入式Linux平台、Windows CE、Symbian等。 Qt按照不同的版本发行,分为商业版和开源版。Qt商业版为商业软件提供开 发环境,它们提供传统商业软件发行版,并且提供在协议有效期内的免费升级和 技术支持服务。而Qt开源版是为了开发自由而设计的开放源码软件,它提供了和 商业版本同样的功能,在GNU通用公共许可证下,它是免费的。
MultithreadedApplicationTutorialzhCN
MultithreadedApplicationTutorialzhCN│Deutsch (de)│ English (en)│ español (es)│ français (fr)│ 日本語 (ja)│ polski (pl)│ português (pt)│ русский (ru)│ slovenčina (sk)│ 中文(中国大陆) (zh_CN)│Contents•1 概述•2 你需要多线程吗?•3 多线程单元•4 TThread类•5 特殊处理o 5.1 Windows堆栈检查o 5.2 多线程包o 5.3 Heaptrc•6 SMP支持•7 Lazarus调试多线程应用程序o7.1 调试输出o7.2 Linux•8 Lazarus 部件工具箱接口o8.1 使用SendMessage/PostMessage进行线程间通信•9 临界区o9.1 共享变量•10 等待另一个线程•11 Fork•12 并行程序/循环•13 分布式计算•14 外部线程o14.1 识别外部线程o14.2 放弃时间片•15 参见概述这个页面将试图解释如何在Free Pascal 和 Lazarus上编写和调试一个多线程应用程序。
一个多线程应用程序创建两个或多个线程同时执行任务。
如果你正需要使用多线程,请阅读"你需要多线程吗?",以确定你是否真的需要;这可以避免些麻烦。
程序中的一个线程被称为主线程,也就是在应用程序启动时由操作系统创建的那个线程。
主线程是唯一一个可以更新用户界面组件的线程,否则,应用程序可能会挂起。
其主要思想是:应用程序使用第二个线程在后台处其他事情,同时用户可以继续使用主线程工作。
线程的另一个用途是为了更好的响应应用程序。
如,你创建了一个应用程序,在应用程序启动时,用户按下按钮启动一个大的任务……处理中……之后,程序停止响应,这让用户觉得应用程序假死了,在用户体验上这很不好。
qt 5 教程
qt 5 教程Qt 5 教程
1. 基础知识
- 安装Qt 5
- Qt 5 的主要特性
- Qt Creator 的使用
- Qt 5 的基本语法
2. 窗口应用程序开发
- 创建一个窗口应用程序
- 添加控件和布局
- 信号与槽的使用
- 窗口之间的通信
3. 图形界面设计
- 使用样式表美化界面
- 自定义控件的创建
- 绘图和渲染技巧
4. 数据库操作
- 连接数据库
- 执行SQL查询
- 数据库事务管理
5. 网络编程
- 创建网络客户端
- 创建网络服务器
- 进行网络通信
6. 多线程编程
- 创建线程
- 线程间通信
- 线程同步和互斥
7. 文件操作
- 文件读写
- 目录操作
- 文件压缩和解压缩
8. 插件开发
- 创建Qt插件
- 插件的动态加载与卸载
- 插件的扩展性和灵活性
9. 跨平台开发
- 开发可在不同平台上运行的应用程序 - 处理平台差异性
- 使用Qt的跨平台特性
10. 调试与测试
- 使用Qt Creator进行调试
- 单元测试和自动化测试
- 性能优化和内存泄漏检测
这个Qt 5教程旨在帮助你学习Qt 5的各种功能和用法。
希望能对你的Qt开发之路有所帮助!。
C++ Qt5 范例开发大全
4
C++ Qt5 范例开发大全
1.9 图片中加文字 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 84 1.10 图像扭曲 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 85 1.11 模糊效果 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 85 1.12 着色效果 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 86 1.13 阴影效果 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 87 1.14 透明效果 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 87 第7章 多媒体应用 1.1 音频、视频播放器 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 90 1.2 播放 Flash 动画 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 94 1.3 播放图片动画 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 95 第8章 系统操作 1.1 获取屏幕分辨率 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 98 1.2 获取本机名、IP 地址 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 98 1.3 根据网址获取 IP 地址 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 99 1.4 判断键盘按下键值 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 100 1.5 获取系统环境变量 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 101 1.6 执行系统命令 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 102 第9章 注册表 1.0 简要说明注册表 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 105 1.1 写入注册表 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 105 1.2 查找注册表 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 106 1.3 修改 IE 浏览器的默认主页 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 107 第10章 数据库基础 1.1 查询数据库驱动 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 109
Qt5开发及实例(第2版)-第3章 Qt 5布局管理
//表示需要插入的子布局对象 //插入的起始行 //插入的起始列 //表示占用的行数 //表示占用的列数 //指定对齐方式
3.4 基本布局(QLayout)
【例】(难度一般) 通过实现一个“用户基本资料修改”的功能表来介绍如 何使用基本布局管理,如QHBoxLayout类、QVBoxLayout类及QGridLayout类,效 果如图3.7所示。
3.5 【综合实例】:修改用户资料
通过实现修改用户资料功能这一综合实例,介绍如何使用布局方法实现一个 复杂的窗口布局,如何使用分割窗口,以及如何使用堆栈窗体,效果如图3.9所 示。
(a)“基本信息”页面
3.5 【综合实例】:修改用户资料
(b)“联系方式”页面
3.5 【综合实例】:修改用户资料
(c)“详细资料”页面 图3.9 修改用户资料实例效果
第3章 Qt 5布局管理
3.1 分割窗口QSplitter类 停靠窗口QDockWidget类 堆栈窗体QStackedWidget类
3.2
3.3 3.4
基本布局(QLayout) 【综合实例】:修改用户资料
3.5
3.1 分割窗口QSplitter类
【例】(简单) 一个十分简单的分割窗口功能,整个对话框由三个窗口组成, 各个窗口之间的大小可随意拖曳改变,效果如图3.1所示。
Байду номын сангаас
3.4 基本布局(QLayout)
addWidget()方法用于加入需要布局的控件,方法原型如下:
void addWidget ( QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment=0 )
计算机软件的多语言处理和国际化支持技巧
计算机软件的多语言处理和国际化支持技巧一、多语言处理的重要性随着全球化的进展,多语言处理和国际化支持成为了现代计算机软件开发的重要组成部分。
不同的地区和用户群体使用不同的语言,因此,软件开发者需要考虑如何实现多语言支持,以满足不同用户的需求。
多语言处理的目标是使软件能够无缝地切换和适配不同的语言环境,以提供更好的用户体验。
二、软件国际化的概念与原则软件国际化是指在软件开发过程中,考虑和处理不同地域和语种的要求,使软件能在各种语言环境中运行。
在进行软件国际化时,开发者需要遵循以下原则:1. 分离文本和代码:将软件中的所有文本内容抽离出来,独立作为资源文件或数据库存储,而不是直接硬编码在代码中。
这样做可以方便后期的翻译和替换。
2. 采用Unicode字符集:Unicode字符集是一种用于表示多种语言字符的标准编码方式,可以支持世界上几乎所有的语言。
在软件开发中,应该尽量使用Unicode字符集,以确保在多语言环境下的兼容性。
3. 考虑各国语言特点:不同语言有不同的文字排列顺序(如英文是从左到右,阿拉伯语是从右到左),还有不同的日期、时间、货币等格式规范。
软件国际化时,应该兼顾不同语言的特点,提供对应的处理机制。
三、多语言处理的具体技巧1. 使用统一的翻译平台:在进行多语言处理时,建议使用专门的翻译平台来管理软件中的文本资源。
这种平台可以方便开发者与翻译人员的协作,提供翻译过程的实时反馈和审校功能,以确保翻译质量和一致性。
2. 考虑文本长度和排版:不同的语言可能有不同的文字长度和排版方式,特别是像中文、日文这样的字符密集语言。
在进行多语言处理时,要留足文本显示的空间,并考虑调整布局,以适应不同语言的需求。
3. 考虑本地化需求:除了文字内容的翻译外,还应该考虑软件界面、图标、颜色、图像等本地化需求。
有些国家或地区有特定的文化、习俗和法规,需要进行相应的调整和适配。
4. 进行本地化测试:在进行多语言处理后,一定要进行充分的本地化测试,以确保软件在各种语言环境下的正常运行和用户体验。
Qt 5开发及实例 第15章 Qt 5多国语言国际化
第15章 Qt 5多国语言国际化
——【实例】语言国简单)(CH1501)多国语言国际化。 操作步骤如下。 (1)新建一个GUI工程“TestHello.pro”,在UI界面上添加两个按钮,并分别将文本修改为hello、 china,如图15.1所示。
(2)修改“TestHello.pro”文件,添加如下代码:
时用到的“.pro”文件,只需定义好变量TRANSLATIONS即可。
(2)利用linguist工具来协助完成翻译工作,即打开前面用lupdate生成的“.ts”文件,对其中的字符串 逐条进行翻译并保存。由于“.ts”文件采用了XML格式,所以也可以使用其他编辑器来打开“.ts”文件并翻 译。 (3)利用lrelease工具处理翻译好的“.ts”文件,生成格式更为紧凑的“.qm”文件。这便是翻译工作 者最终需要提供的资源文件,它所占的空间比“.ts”文件小,但基本不具有可读性,只有QTranslator能够正 确地识别它。
第15章 Qt 5多国语言国际化
——基本概念
01
国际化支持的实现
国际化支持的实现
(1)使用QString对象表示所有用户可见的文本。由于QString内部使用Unicode编码实现,所以它可以用于 表示所有需要向用户呈现的文本。当然,对于仅程序员可见的文本并不需要都变为QString对象,可利用Qt提供 的QCString或原始的“char *”。 (2)使用tr()函数获取所有需要翻译的文本。在Qt的翻译机制下,QObject::tr()函数可以帮助程序员取得翻 译之后的文本。对于从QObject继承而来的类,QObject::tr()函数最终由QMetaObject::tr()实现。在某些时候,如 果无法使用QObject::tr()函数,则可以直接调用QCoreApplication::translate()取得翻译之后的字符串。 (3)使用QString::arg()方法组织动态文本。有些时候,一段文本需要由一些静态文本和动态变量组合起来, 如常见的情况“printf("The value of i is: %d", i)”。对于这种动态文本的翻译,由于语言习惯的问题,如果简单 地采用这种连接字符串的方法,则可能会带来一些问题,如下面的字符串用于表示任务的完成情况: QString m = tr("Mission status: " )+ x + tr("of ") + y +tr("are completed"); 其中,x和y是动态的变量,三个字符串被x和y分隔开,它们能够被很好地编译,因为“x of y”是英语中分 数的表示方法,如4 of 5是分数4/5,在不同的语言中,分子和分母的位置可能是颠倒的,在这种情况下,数字 4和5的位置在翻译时无法被正确地放置。由此可见,孤立地翻译被分隔开的字符串是不行的,改进的办法是使 用QString:: arg()方法: QString m = tr("Mission status: %1 of %2 are completed").arg(x).arg(y); (4)利用QTranslator::load()和QCoreApplication::installTranslator()函数读取对应的翻译之后的资源文件。翻 译工作者将提供包含翻译之后的字符串的资源文件“*.qm”,程序员还需要做的是定义QTranslator对象,并使 用load()函数读取相应的“.qm”文件,利用QCoreApplication:: installTranslator()函数安装QTranslator对象。
CBM培训资料
Engineer ITControl Builder MVersion 3.2Getting Started工业工程IT控制应用开发版本 3.2入门山东恒拓科技开展本资料是由山东恒拓科技开展〔ABB系统集成商〕内部员工参考CBM原版说明书翻译整理而成,本书主要用于内部参考学习及客户培训使用,未经山东恒拓科技开展许可的前提下,其他任何人员不可擅自复制,传播。
译者:孔祥玉。
本文献中的所有信息可能会在没有通知的前提下发生修改,并且ABB拥有对所有信息的解释权。
对于本文献中可能出现的任何错误,ABB不负任何法律责任。
在本文献的使用过程中,ABB对于因自然或非自然因素而产生的直接的、间接的、特殊的和附带的所有损失不负任何责任,且ABB对本文献中软件和硬件的描述中产生的任何损失不负任何责任。
在没有ABB的许可之下,本文献或其中的章节不可进行复制,且其中内容不可授予第三方或任何未授权的应用。
版权拥有© 1999 ABB保存所有版权发行:2002年12月文献编号:3BSE 028 807 R201 Rev B商标本文中使用到的注册和商标:Windows 微软公司注册ActiveX 微软公司注册PostScript Adobe Systems Inc. 注册Acrobat Reader Adobe Systems Inc. 注册Industrial IT ABB 注册第一部Control Builder M目录关于本书简介 (6)第一章–介绍Control Builder M产品总览........................................................................ ... ... . (7)编程语言....................................................... ... ... ... ... ... . (7)工程开发器.................................................... ... . (7)库................................ ... ... (8)安装要求....................................................................... ....................... . (8)可以支持的控制器组态.......... .. ....................................... ....................... . (9)Control Builder和控制器组态................................................. (10)分散控制................ ....... ....... ....... ....... ....... ........................... ..................... .. (11)Control Builder现有版本及其差异........................................ (12)第二章–安装Control Builder M................ ..... ..... ..... ..... .. .. ... .. (13)逐步安装指南........................................................ .. .. ... (14)TCP/IP 网络协议................................................. ..... ..... ..... .. (14)设置...................................................................................... ...... ...... ...... .. (15)启动................... ..... ..... ..... ..... . (15)AC800M/C的MMS效劳器............................................................. . (15)添加删除程序...................... ..... ..... ..... .. (15)第三章–培训导言.............................. ..... ..... ..... .. (17)开始新工程.......................................... ......... ......... (17)工程开发器...................................................................... . (18)标题菜单工具 (36)库...................................................................................................................... .. (37)控制器.................................................................................................................... . 38 任务. (40)应用 (40)变量间接 (43)变量声明〔定义〕 (43)局部变量 (44)模拟 (47)关闭Control Builder M (49)第四章–举例– Shop Doors简介 (51)选择模板 (52)声明变量和数据类型 (53)变量声明 (54)使用ST语言编写代码 (56)改变编程语言 (56)声明功能块 (57)划分程序功能段 (58)代码输入 (59)模拟 (62)硬件组态 (64)连接I/O通道和应用 (65)第五章–下装和测试简介 (71)通过串行电缆进行操作系统下装 (71)给冗余控制器下装操作系统 (73)设定IP地址 (74)通过以太网下装工程 (77)在线测试 (91)附录AC800 M/C的OPC效劳器简介 (91)自动启动OPC效劳器OPC的组态面板第二部AC800M Controller Hardware目录关于本书第一章–简介产品总览 (27)AC 800M 控制器的突出特性 (38)第二章–安装安装环境要求 (41)电缆 (43)电源 (44)防护等级 (46)将AC 800M单元安装于标准DIN-Rail导轨 (47)安装PM856/860/861/TP830 控制器单元〔单独〕 (54)安装PM861/TP830 控制器单元〔冗余〕 (62)安装PROFIBUS DP 通讯单元,CI851/TP851 (65)安装RS232-C通讯单元, CI853/TP853 (69)安装PROFIBUS DP-V1通讯单元, CI854/TP854 (70)安装CEX-bus电缆 (74)安装ModuleBus 电缆 (75)安装SD82x 供电电源 (76)安装主断路器 (77)安装SS822冗余电源选择模块 (79)安装SB821外部电池 (83)安装I/O 单元 (83)柜体安装 (84)第三章–组态简介 (89)连接到Control Builder M (89)连接到控制网 (90)通讯方式 (91)控制器IP地址 (93)在Control Builder M设置冗余控制器 (93)I/O系统 (94)驱动系统 (98)供电系统 (100)柜体中的电源模块 (101)柜外电源设备Powering Field Equipment outside the Cabinet (101)外部+24 V DC 电源 (103)第四章–操作AC 800M 控制器(PM856/860/861) (107)启动 (110)启动模式 (110)自动切换到冗余后备控制器 (112)AC 800M系统运行检查 (113)观察单控制器的运行 (113)观察冗余控制器的运行 (115)第五章–维修维修频率 (117)更换电池 (118)内部电池 (118)SB821外部电池单元 (120)在线插拔 (124)更换PM861冗余控制器 (124)维修步骤 (125)查找问题 (126)PM856/860/861控制器单元 (126)PM861 CPU冗余单元 (127)内部电池/ SB821外部电池 (127)PROFIBUS DP – CI851 (128)RS232-C Channels – CI853 (132)PROFIBUS DP-V1 – CI854 (133)Table of Contents附录–硬件单元PM856/PM860和TP830 –控制器单元 (137)技术数据 (138)性能数据 (142)PM861 and TP830 –控制器单元 (143)技术数据 (144)性能数据 (146)CI851 和TP851 – PROFIBUS DP单元 (147)CI853 和TP853 – RS232-C单元 (155)CI854 和TP854 – PROFIBUS DP-V1 Interface (159)电源单元–SD821, SD822 和SD823 (175)SS822 – (冗余电源选择单元) (183)SB821外部电池 (187)其他 (189)TB850 -- CEX-bus终端电阻 (189)TB851 -- CEX-bus终端电阻 (190)TB807 ModuleBus终端电阻 (191)TB852 RCU 连接终端电阻 (191)TK850 CEX-bus 外部电缆 (191)TK851 RCU连接电缆 (191)TK853电缆 (192)TK212工具电缆 (193)第一部Control Builder M关于本书简介欢迎使用本软件〔Control IT for AC 800M/C〕----一个真正全开放的工业控制开发系统。
AllegroSkill 跟着学-先学会用_0204
Cadence 提供二次开发的 SKILL 语言,它是一种基于通用人工智能语言——Lisp 的交互式高级 编程语言(LISP 即 List Processing-表处理,是最早和最重要的符号处理编程语言之一,它于 1958 年由美国的 J. McCarthy 提出,LISP 在人工智能 AI 方面获得广泛应用)。
. 语法约定
在 Cadence skill 帮助中出现在语法描述中的字样:
text
说明文字必须准确输入
z_argument 说明文字用于替换相应的参数,前缀(z_)表示数据类弄的参数可以接受。
[]表示可选参数。|分离选项的选择
{}
使用竖线各封闭的选项,你必须选择一项。
...
表示重复前面的描述,
官网:
§1-11 手工修改菜单_allegro.mem................20 §1-12 动态修改菜单......................................22 §1-13 多国语言的实现 .................................25 §1-14 实例演示..............................................27 附 访问官网.邀请加入.................................. 28
.3.
=>
函数返回值,及结果
text
指示手册,菜单命令,表单按钮各表单域的名称
. 函数调用
你可以通过 键盘、窗体、菜单、命令解释器、skill 程序等方式去执行 skill 代码来实现功能。
Bindkeys 一个 Bindkeys 关联键盘事件,发送 Skill 功能 Forms 有些功能需要您填写字段,在弹出的表单中提供数据。 Menus 当您在菜单中选择一个项目时,系统会发送相关的 Skill 功能。 CIW 你可以直接输入 Skill 功能到 CIW,进行立即评估。 Skill process 您可以启动一个单独的 UNIX 的过程 ,可以直接提交 skill 功能的解释。 Skill Interpreter 您可能通过回载 skill 源码文件,对提交的 skill 功能进行集中评估。
PyQt5官方教程+帮助文档+模块功能汇总
PyQt5官⽅教程+帮助⽂档+模块功能汇总写在开头笔者⾃学PyQt5的过程中,在⽹上发现了不少友好的新⼿⼊门教程,⽐如:但是学习PyQt5的最好⽅法是阅读官⽅⽂档 + ⾃⼰动⼿实践,笔者将分享,翻译部分内容,并整理汇总常⽤组件。
pyqt5 简介PyQt5是绑定Python的Qt应⽤程序框架。
Qt是⼀组C++库和开发⼯具,包括平台独⽴抽象图形⽤户接⼝、⽹络、线程、正则表达式、SQL数据库、SVG、OpenGL、XML、⽤户和应⽤程序设置、定位和定位服务、短程通信(NFC和蓝⽛)、上⽹、3D动画、图表、3D数据可视化和应⽤商店接⼝。
这些功能由1000多个类实现,这些类被封装成⼀组模块。
PyQt5⽀持Windows、Linux、UNIX、Android、MacOS和iOS平台。
PyQt5的主页是< >,在这⾥能找到最新的稳定版本、当前的开发版本和帮助⽂档的最新版本。
当前版本为PyQt5 v5.14.0(2020.02.26) PyQt5是使⽤SIP绑定⽣成器构建的。
为了构建和使⽤PyQt5,必须安装SIP。
PyQt4⽀持Qt的早期版本。
pyqt5包含的模块PyQt5的如下表所⽰:(按字典序排列)模块名功能Enginio⽤于访问Qt云服务的类(不推荐)QAxContainer访问ActiveX控件和COM对象的类Qt其他模块的合并Qt3DAnimation在模拟中⽀持动画的类Qt3DCore⽀持近实时仿真系统的核⼼类Qt3DExtras预先构建的元素,与Qt3D⼀起使⽤Qt3DInput处理使⽤Qt3D时⽤户输⼊的类Qt3DLogic启⽤帧同步的类Qt3DRender启⽤2D和3D呈现的类QtAndroidExtras特定于Android的附加类QtBluetooth⽀持设备之间蓝⽛连接的类QtChart⽀持2D图表创建的类QtCore Qt核⼼类QtDBus使⽤D-Bus协议⽀持IPC的类QtDataVisualization⽀持3D数据可视化的类QtDesigner允许使⽤Python扩展Qt设计器的类QtGui widget和OpenGL gui共有的核⼼类QtHelp⽤于创建和查看可搜索⽂档的类QtLocation⽤于创建映射应⽤程序的类QtMacExtras特定于macOS和iOS的附加类QtMultimedia多媒体内容、摄像机和收⾳机的类QtMultimediaWidgets提供附加的多媒体相关⼩部件和控件的类QtNetwork核⼼⽹络类QtNetworkAuth⽹络授权类QtNfc⽀持设备之间NFC连接的类QtOpenGL在传统窗⼝⼩部件中呈现OpenGL的类(不推荐)QtPositioning从卫星、wifi等获取定位信息的类QtPrintSupport实现打印的类QtPurchasing⽀持从应⽤商店购买应⽤程序的类模块名功能QtQml与QML语⾔集成的类QtQuick使⽤Python代码扩展QML应⽤程序的类QtQuickWidgets⽤于在传统⼩部件中呈现QML场景的类QtRemoteObjects⽤于在进程或系统之间共享QObject的API的类QtSensors⽤于访问系统硬件传感器的类QtSerialPort⽤于访问系统的串⾏端⼝的类QtSql与SQL数据库集成的类QtSvg提供对SVG⽀持的类QtTest⽀持GUI应⽤程序单元测试的类QtWebChannel⽤于Python和HTML/JavaScript之间的点对点通信的类QtWebEngine⽤于将QML Web引擎对象与Python集成的类QtWebEngineCore Web引擎核⼼类QtWebEngineWidgets基于Chromium的web浏览器QtWebKit基于WebKit2的web浏览器(已弃⽤) QtWebKitWidgets基于WebKit1的web浏览器(已弃⽤)QtWebSockets实现WebSocket协议的类QtWidgets⽤于创建经典桌⾯样式ui的类QtWinExtras特定于Windows的附加类QtX11Extras特定于X11的其他类QtXml⽀持SAX和DOM到XML接⼝的类QtXmlPatterns⽀持其他XML技术的类sip绑定开发⼈员和⽤户的实⽤程序uic⽤于处理Qt设计器创建的⽂件的类写在最后⽹上资源整理与总结⽔平参差不齐,官⽅⽂档永远是最可靠的伙伴。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“.ts”文件,对其中的字符串逐条进行翻译并保存。 (3)利用lrelease工具处理翻译好的“.ts”文件,生成格式更为紧凑的 “.qm”文件。
14.2 实 例
14.2.1 实例1 (1)新建一个GUI工程TestHello.pro,然后在UI文件上添加两个按钮并分 别把文本修改为hello、china,如图所示。
14.2 实 例
(2)修改TestHello.pro文件,添加: TRANSLATIONS =TestHello.ts (3)编译。记住一定要先编译假如没有编译而进行下面的步骤, 生成的ts文件只是一个只有标题栏的框架。 (4) 编译完成后,假如是windows下就cmd ,假如是linux就开终 端。单击“开始”->“所有程序”->命令打开“Qt Commond Prompt”窗口,cd 进入TestHello.pro工程目录,执行命令: lupdate TestHello.pro (5)选择Qt自带的Linguist菜单项,并运行它,在主界面上选择文 件-->打开 设置源语言和目标语言, (6)在第二栏选择要翻译的字符串。在下面两行中输入对应的翻 译文字,然后单击上面的 按钮。 (7)选择文件-->发布菜单项,生成“testHello.qm”文件
(4)利用QTranslator::load()和QCoreApplication::installTranslator()读取对应的
翻译之后的资源文件。
14.1.2 翻译工作:“*.qm”文件的生成
(1)利用lupdate工具从源代码中扫描并提取需要翻译的字符串,生成“.ts” 文件。
(2)利用linguist工具来协助完成翻译工作,即打开前面用lupdate生成的
第十四章 Qt 5 多国语言国际化1 Nhomakorabea.1 概念
14.2 实例
第14章 Qt 5多国语言国际化
14.1 概念
14.1.1 国际化的支持的实现
(1)使用QString对象表示所有用户可见的文本。由于QString内部使用 Unicode编码实现,所以它可以用于表示所有需要向用户呈现的文本。 (2)使用tr()函数获取所有需要翻译的文本。在Qt的翻译机制下,QObject::tr() 函数可以帮程序员取得翻译之后的文本。 (3)使用QString::arg()组织动态文本。有些时候,一段文本需要由一些静态 文本和动态变量组合起来,如常见的情况“printf(“The value of i is: %d”, i)”。 QString m = tr(“Mission status: “ )+ x + tr(“of “) + y +tr(”are completed”);
14.2 实 例
(8)修改的源代码。 添加前,具体代码如下: #include <Qtranslator> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTranslator *translator = new QTranslator; translator>load("D:/Qt/CH14/CH1401/TestHello/TestHello.qm"); a.installTranslator(translator); MainWindow w; w.show(); return a.exec(); }