Qt中怎么用Ui文件
Qt中怎么用Ui文件 第一步, 制作ui文件。 首先应该用Qt Designer绘制一个自己的界面,并存为myform.ui(这里的myform可以用自己喜欢的名字代替)。 在制作自己的界面文件时要注意以下几个要点: 1、要记住ui文件的名字,因为uic生成的代码会存在ui_myform.h里 2、要记住主窗体的object name, 因为ui文件提供的类名将以这个form的名字来命名 3、要特别注意你的form选择的基类要和你代码中的窗体类兼容 4、要记得给每个后面需要访问到的控件起一个有意义并且好记的object name, 因为ui文件提供的控件将以这些object name来命名 清楚了以上几点,在代码中使用你的ui文件就会变得非常简单。 第二步,将ui文件加入工程 这一步最简单,只需要修改pro文件,加入FORMS+=myform.ui qmake -project命令也可以识别后缀名为ui的文件,并将之加入工程。 第三步,在代码中引用ui文件 官方介绍的使用ui文件的方法有三种,一个是直接引用,二是单继承,三是多继承。 第一种方法其实很不实用,大家去看一下文档中的例子就可以了;第二种和第三种没有本质的差别,可以并作一类,这里做重点介绍。 ui文件最终会被翻译成标准的C++代码,并存入一个.h文件中,这个过程在调用make之后才进行,所以初始情况下你是看不到这个ui_myform.h文件的,只有经过了make过程该头文件才生成。不过没关系,没有这个文件我们照样能写出正确的代码。 单继承方式简单来说就是在代码中首先要自定义一个子类(后文称为MyForm),该类要从form对应的窗体类(或其兼容的子类)派生;并用ui生成的类定义一个类里的成员变量(后文成文myui)。这样在MyForm的构造函数中可以直接调用myui和myui中的变量和函数,使用起来很方便。 举例说明, 比如这里有一个ui文件叫myform.ui, ui文件里定义的窗体名字为BigWidget,上面摆放了一个单行编辑控件叫lineeditName: //myform.h #include “ui_myform.h” class MyForm: public QWidget { Q_OBJECT public: MyForm(QWidget*parent) { myui.setupUi(this); } private: Ui::BigWidget myui; private: void my_function(); }; 上面这段简单的类的声明是前文所述前三点要点的最佳例证,请对照要点的文字描述和具体的代码体会其中的含义。这里还有一点比较有意思的地方,就是ui文件提供的类被包含在了名为Ui的name space里,这样做的目的是将ui文件的命名空间与用户的代码分离,避免两者出现命名冲突的情况。相应的,我们写代码的时候也要注意在使用ui文件中的类时要用“Ui::”的方式进行引用。 再来看cpp文件 //myform.cpp #include <QMessageBox> #include “myform.h” void my_function(void) { QMessageBox::information(this, “Name”, myui.lineeditName->text()); } 这里随便写了一个函数,为了说明如何在窗体类里调用ui文件中定义的控件。这段代码非常简单,就不多作说明了。 有了单继承的基础,学习多继承是小菜一碟。来段代码看一下就明白了。 //myform.h #include “ui_myform.h” class MyForm: public QWidget, public Ui::BigWidget { Q_OBJECT public: MyForm(QWidget*parent) { setupUi(this); } private: void my_function(); }; //myform.cpp #include <QMessageBox> #include “myform.h” void my_function(void) { QMessageBox::information(this, “Name”, lineeditName->text()); } 是不是不用说明大家也能明白呢?多继承其实就是不仅从form需要的窗体类去派生,还要加上ui提供的类本身。这样带来的好处是你的窗体类继承了ui里的所有控件和方法,调用时就可以少写一些字。 单继承和多继承这两种方法没有好坏之分,大家可以根据自己的编程习惯取舍。 第四步,编译、验证在pro文件包含正确FORMS信息的情况下,运行qmake; make就可以编译工程了。 make时如果你认真看一下输出就会发现,make在最开始编译的时候就会自动调用uic去生成需要的代码。经过make之后ui_myform.h文件就生成了,建议大家去看一下这个文件的内容。 ### Qt中如何使用Ui文件 在Qt开发环境中,利用Ui文件设计用户界面是一种常见的实践,它可以帮助开发者快速构建美观且功能丰富的图形用户界面。本文将详细介绍如何在Qt中使用Ui文件,包括Ui文件的创建、集成到项目中、在代码中引用以及编译验证等步骤。 #### 第一步:制作Ui文件 1. **使用Qt Designer绘制界面**:启动Qt Designer工具,设计所需的用户界面布局。例如,你可以设计一个简单的窗口,并添加一些按钮、文本框等控件。完成后,保存此界面文件为`myform.ui`。这里的`myform`可以替换为你喜欢的任何名称。 2. **注意要点**: - 记住Ui文件的名字,因为Qt的UI Compiler (`uic`) 生成的代码将被保存在一个名为`ui_myform.h`的文件中。 - 记录下主窗体的`object name`,因为Ui文件提供的类名将以这个窗体的名字命名。 - 选择的基类应与你代码中的窗体类兼容。例如,如果你的窗体类是`QWidget`的子类,则Ui文件中的窗体也应该是`QWidget`或其子类。 - 给每一个后续可能需要访问的控件赋予一个有意义的`object name`,因为Ui文件中引用的控件将以这些`object name`命名。 #### 第二步:将Ui文件加入工程项目 1. **修改pro文件**:在项目的`.pro`文件中,添加一行`FORMS += myform.ui`,这样Qt的构建系统就会知道需要处理这个Ui文件。 2. **使用qmake命令**:执行`qmake`命令,Qt的构建系统会识别后缀名为`.ui`的文件,并将其加入到项目中。此外,`qmake -project`命令也可以识别这些`.ui`文件并将它们添加到项目中。 #### 第三步:在代码中引用Ui文件 1. **官方提供的方法**:Qt提供了三种使用Ui文件的方法——直接引用、单继承和多继承。这里重点介绍单继承和多继承两种方法,因为直接引用方法不太实用。 2. **单继承**: - 创建一个子类`MyForm`,该类从Ui文件中窗体类(或兼容的子类)派生。 - 使用Ui文件生成的类定义一个成员变量(如`myui`)。 - 在`MyForm`的构造函数中直接调用`myui`及其内部的变量和函数,便于使用。 ```cpp // myform.h #include "ui_myform.h" class MyForm : public QWidget { Q_OBJECT public: MyForm(QWidget *parent) { myui.setupUi(this); } private: Ui::BigWidget myui; // Ui::BigWidget是根据Ui文件生成的类名 private: void my_function(); }; ``` 3. **多继承**: - 类似于单继承,但除了从窗体类派生外,还要从Ui文件生成的类本身派生。 - 这样使得窗体类继承了Ui文件中的所有控件和方法,进一步简化了控件的调用。 ```cpp // myform.h #include "ui_myform.h" class MyForm : public QWidget, public Ui::BigWidget { Q_OBJECT public: MyForm(QWidget *parent) { setupUi(this); } private: void my_function(); }; ``` #### 第四步:编译与验证 1. **编译**:确保`.pro`文件包含了正确的`FORMS`信息。运行`qmake; make`命令以编译工程。 2. **观察编译过程**:在编译过程中,你会注意到`make`命令自动调用了`uic`工具来生成所需的`.h`文件。例如,对于`myform.ui`,会生成`ui_myform.h`文件。 通过以上步骤,你可以在Qt中有效地使用Ui文件来设计和实现用户界面。这种做法不仅可以提高开发效率,还能保证界面的一致性和可维护性。





















- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- PLC控制交通灯设计方案毕业论文.docx
- c语言课程设计方案报告.doc
- Windows网络服务搭建管理之WEBFTP(服务器群集负载平衡)CA证书服务器的搭建和配置.doc
- 谈航道系统档案信息化管理存在的问题及发展对策.docx
- 建设工程项目管理存在问题.doc
- 单片机霓虹灯控制系统设计方案.doc
- 专业名称:计算机应用技术.doc
- 企业网络设计规划.doc
- 质量保证计划软件.doc
- PLC实验室项目申请书.doc
- 物联网在平安校园建设中的应用与研究.docx
- BC网站的分析与设计方案.doc
- 基于微课教育的中职计算机应用基础教育研究.docx
- 把MSHFlexGrid里数据导出至Excel.doc
- 计算机在体育管理中应用研究.docx
- 大数据时代初中数学高效课堂的构建.docx


