本教程详细介绍了如何在Qt开发环境中利用UI文件创建图形用户界面,涵盖了从编辑器设计到代码集成的各项步骤。
在Qt中使用UI文件的第一步是创建一个UI文件。首先,在Qt Designer中设计你的界面,并将其保存为myform.ui(这里的myform可以用你想要的名字)。需要注意以下几点:
1. 记住ui文件的名称,因为uic生成的代码会存在名为ui_myform.h的头文件里。
2. 确保记住主窗体的对象名,因为UI提供的类将基于这个形式对象名来命名。
3. 选择与你的代码中的窗口类兼容的基础类。
4. 给每个需要在代码中访问的控件起一个有意义且易于记忆的对象名称。这些对象名称会被用来为ui文件提供组件。
了解了以上要点,就可以很容易地使用UI文件进行编程了。第二步是将UI文件添加到项目中,这可以通过修改pro文件并加入FORMS+=myform.ui来完成,或者使用qmake -project命令自动识别和包含后缀名为ui的文件。
第三步是在代码中引用UI文件。官方推荐的方法有三种:直接引用、单继承以及多继承。第一种方法不太实用;第二种和第三种没有本质区别,可以合并为一类进行介绍。最终,UI文件将被转换成标准C++代码,并存储在一个.h头文件里,在make过程后才会生成这个ui_myform.h文件。
在使用单继承方式时,你需要自定义一个子类(例如MyForm),并且该类需要从形式对应的窗口类型派生;同时用ui生成的类定义一个成员变量。这样就可以直接调用myui.setupUi(this)来设置UI,并且可以在构造函数中访问和操作这些控件。
举个例子,假设有一个名为myform.ui的UI文件,在其中定义了一个名叫BigWidget的对象以及一个单行编辑器lineeditName:
```cpp
// myform.h
#include ui_myform.h
class MyForm : public QWidget {
Q_OBJECT
public:
MyForm(QWidget *parent = nullptr) { ui.setupUi(this); }
private:
Ui::BigWidget ui;
private slots: // 添加函数槽的声明,例如:
void on_lineeditName_returnPressed();
};
```
在cpp文件中,则可以使用ui.lineeditName来引用UI中的控件:
```cpp
// myform.cpp
#include
#include myform.h
void MyForm::on_lineeditName_returnPressed() {
QMessageBox::information(this, tr(Name), ui.lineeditName->text());
}
```
多继承方式是除了从需要的窗口类派生外,还要添加ui提供的类本身。这种方式的好处在于你的窗体类直接继承了UI里的所有控件和方法,调用时可以更加简洁。
最后一步是编译并验证项目,在正确包含FORMS信息的情况下运行qmake; make即可完成工程构建。在构建过程中,uic会自动被用来生成所需的代码文件ui_myform.h,并且建议查看这个头文件的内容以了解其工作原理和结构。