杰瑞科技汇

Qt Designer怎么用?新手入门教程从哪开始?

Qt Designer 完整教程:从零开始打造专业界面

目录

  1. 第一部分:初识 Qt Designer

    Qt Designer怎么用?新手入门教程从哪开始?-图1
    (图片来源网络,侵删)
    • 1 什么是 Qt Designer?
    • 2 为什么使用 Qt Designer?(优势)
    • 3 如何启动 Qt Designer?
    • 4 界面概览
  2. 第二部分:核心概念与基本操作

    • 1 项目与 .ui 文件
    • 2 控件
    • 3 布局
    • 4 容器
    • 5 栅格布局
    • 6 对齐线
  3. 第三部分:实战演练:创建一个登录窗口

    • 1 新建项目
    • 2 拖放控件
    • 3 使用布局管理器
    • 4 设置对象名称
    • 5 样式美化
    • 6 保存 .ui 文件
  4. 第四部分:在 C++ 代码中使用 .ui 文件

    • 1 方法一:使用 uic 工具(推荐)
    • 2 方法二:使用 QUiLoader 类(动态加载)
  5. 第五部分:进阶技巧

    Qt Designer怎么用?新手入门教程从哪开始?-图2
    (图片来源网络,侵删)
    • 1 伙伴编辑器
    • 2 样式表
    • 3 自定义控件
    • 4 信号与槽
  6. 第六部分:总结与资源


第一部分:初识 Qt Designer

1 什么是 Qt Designer?

Qt Designer 是 Qt 官方提供的一个可视化界面设计工具,它允许你通过拖放的方式,像使用 Photoshop 或 Figma 一样,快速创建出应用程序的用户界面,你设计的界面会被保存为一个 .ui 文件(实际上是 XML 格式),这个文件可以被 C++ 或 Python 代码轻松加载和使用。

2 为什么使用 Qt Designer?(优势)

  • 所见即所得:直观地设计界面,无需手动编写大量繁琐的布局和定位代码。
  • 提高效率:分离 UI 设计和业务逻辑,让设计师和开发者可以并行工作。
  • 跨平台:使用 Qt Designer 设计的界面在不同操作系统(Windows, macOS, Linux)上都能保持一致的外观。
  • 丰富的控件:提供了 Qt 框架中几乎所有标准控件,并支持自定义控件。

3 如何启动 Qt Designer?

安装 Qt 后,有几种方式可以启动它:

  1. 通过开始菜单/启动台:通常在 Qt 的安装目录下可以找到 "Qt Designer" 的快捷方式。
  2. 通过命令行:打开终端或命令提示符,输入 designer 并回车。
  3. 通过 Qt Creator:在 Qt Creator 中,可以通过 Tools -> External -> Qt Designer 来启动。

4 界面概览

启动 Qt Designer 后,你会看到以下主要区域:

Qt Designer怎么用?新手入门教程从哪开始?-图3
(图片来源网络,侵删)
  • 主菜单栏:包含文件、编辑、视图、格式、工具、帮助等菜单。
  • 工具栏:提供常用功能的快捷按钮。
  • Widget Box (控件箱):这里存放了所有可用的 UI 控件,如按钮、标签、输入框、列表等,你可以直接将控件拖到窗体上。
  • Object Inspector (对象检查器):以树状结构显示当前窗体中的所有控件及其层级关系,这对于理解复杂的布局结构非常有用。
  • Property Editor (属性编辑器):这是最重要的面板之一,选中任何一个控件后,你都可以在这里修改它的各种属性,如 objectName(对象名称)、text(文本)、geometry(几何尺寸)、styleSheet(样式表)等。
  • Action Editor (动作编辑器):用于创建和管理 QAction,通常用于菜单栏和工具栏。
  • 中央设计区域:你的主设计画布,你可以在这里拖放控件并设计界面。

第二部分:核心概念与基本操作

1 项目与 .ui 文件

一个设计会话就是一个项目,它被保存为一个 .ui 文件,这个文件是纯文本的 XML 文件,描述了界面上所有控件的类型、属性、布局和层级关系。

2 控件

控件是构成界面的基本元素,如 QPushButton(按钮)、QLabel(标签)、QLineEdit(单行文本框)等,从 Widget Box 中拖动控件到设计区域即可使用。

3 布局

布局是 Qt Designer 的精髓。绝对定位(手动设置 x, y, width, height)在不同分辨率下表现很差,而布局管理器可以让界面自动适应窗口大小的变化。

Qt Designer 支持以下几种布局:

  • 垂直布局:控件垂直排列,高度可变,宽度固定。
  • 水平布局:控件水平排列,宽度可变,高度固定。
  • 网格布局:控件按行和列排列,最灵活、最常用。
  • 表单布局:专门用于创建表单,如“标签: 输入框”的排列方式。

如何应用布局?

  1. 选中一个或多个控件。
  2. 在工具栏或右键菜单中选择对应的布局按钮,或使用快捷键(如 Ctrl+2 为垂直布局)。

4 容器

容器是用于容纳其他控件的特殊控件,

  • Group Box (分组框):将相关控件组合在一起,并带有标题。
  • Tab Widget (选项卡):创建多页界面。
  • Scroll Area (滚动区域)超出可视区域时,提供滚动条。

5 栅格布局

栅格是窗体上的一个背景网格,你可以通过 视图 -> 显示栅格 来开启它,开启栅格后,拖动控件时,控件会自动对齐到最近的网格线上,这使得对齐多个控件变得非常容易。

6 对齐线

当你拖动控件时,Qt Designer 会自动检测并显示临时的对齐线,帮助你将控件与其他控件的边缘或中心对齐,这是实现像素级完美对齐的关键。


第三部分:实战演练:创建一个登录窗口

让我们通过一个具体的例子来巩固所学知识。

目标: 创建一个包含“用户名”、“密码”输入框和“登录”、“取消”按钮的登录窗口。

1 新建项目

  1. 启动 Qt Designer。
  2. 在弹出的对话框中,选择 "Main Window"(主窗口)或 "Dialog"(对话框),对于登录窗口,选择 "Dialog" 更合适。
  3. 点击 "Create"。

2 拖放控件

从 Widget Box 中拖动以下控件到窗体上:

  • 两个 Label
  • 两个 Line Edit(单行文本框)
  • 一个 Push Button(按钮)
  • 再拖一个 Push Button

3 使用布局管理器

  1. 调整标签和输入框:按住 Ctrl 键,选中第一个标签和它旁边的输入框,点击工具栏的 表单布局 按钮,对另一组标签和输入框做同样操作。
  2. 调整按钮:选中两个按钮,点击工具栏的 水平布局 按钮。
  3. 整体布局:现在窗体上有三个部分(两个表单和一个水平布局的按钮),选中这三个部分,点击工具栏的 垂直布局 按钮。

当你调整窗口大小时,所有控件都会自动调整位置和大小,保持良好的布局。

4 设置对象名称

这是至关重要的一步,因为我们在 C++ 代码中需要通过这个名称来访问控件。

  1. 在 Object Inspector 中选中第一个 Label
  2. 在 Property Editor 中找到 objectName 属性,将其值改为 labelUsername
  3. 同样地,将其他控件的 objectName 分别设置为:
    • 第二个 Label -> labelPassword
    • 第一个 Line Edit -> lineEditUsername
    • 第二个 Line Edit -> lineEditPassword (可以设置其 echoMode 属性为 Password,使其显示为 )
    • 第一个 Button -> btnLogin
    • 第二个 Button -> btnCancel

5 样式美化

我们可以使用样式表来美化界面。

  1. 选中整个窗体(在 Object Inspector 中点击 Dialog)。
  2. 在 Property Editor 中找到 styleSheet 属性,点击右侧的 按钮。
  3. 在弹出的编辑器中输入一些 CSS 代码,
    QDialog {
        background-color: #f0f0f0;
    }
    QPushButton {
        background-color: #007bff;
        color: white;
        border: none;
        padding: 5px 15px;
        border-radius: 3px;
    }
    QPushButton:hover {
        background-color: #0056b3;
    }
    QLineEdit {
        border: 1px solid #ccc;
        border-radius: 3px;
        padding: 5px;
    }
  4. 点击 "OK" 应用样式。

6 保存 .ui 文件

点击 文件 -> 保存,将文件命名为 login_dialog.ui 并保存到你的项目目录中。


第四部分:在 C++ 代码中使用 .ui 文件

我们将在 C++ 程序中加载并使用这个设计好的界面。

1 方法一:使用 uic 工具(推荐)

这是最常用、最简单的方法,它将 .ui 文件直接编译成 C++ 头文件(.h)。

  1. 编译 .ui 文件: 打开命令行,进入你的项目目录,运行以下命令:

    # 将 login_dialog.ui 编译成 ui_login_dialog.h
    uic login_dialog.ui -o ui_login_dialog.h

    现在你的项目中会多出一个 ui_login_dialog.h 文件。

  2. 编写 C++ 代码: 创建一个 main.cpp 文件,内容如下:

    #include <QApplication>
    #include <QDialog>
    #include "ui_login_dialog.h" // 包含编译后的 UI 头文件
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        // 创建一个 QDialog 对象
        QDialog dialog;
        // 创建一个 Ui::LoginDialog 对象
        Ui::LoginDialog ui;
        // 使用 setupUi 函数将 UI 设置到 dialog 对象上
        ui.setupUi(&dialog);
        // 现在你可以通过 ui 对象访问控件了
        // 将登录按钮的文本改为 "登录"
        ui.btnLogin->setText("登录");
        // 显示对话框
        dialog.exec();
        return app.exec();
    }
  3. 编译和运行: 确保你的 CMakeLists.txt.pro 文件正确配置了 Qt 模块,然后编译并运行程序,你就能看到设计好的登录窗口了。

2 方法二:使用 QUiLoader 类(动态加载)

这种方法不需要预先编译 .ui 文件,而是在运行时动态加载,更加灵活。

#include <QApplication>
#include <QDialog>
#include <QUiLoader> // 包含 QUiLoader
#include <QFile>     // 包含 QFile
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QUiLoader loader;
    // 打开 .ui 文件
    QFile file(":/login_dialog.ui"); // 假设将 ui 文件作为资源文件
    // 或者 QFile file("login_dialog.ui"); // 从文件系统加载
    if (file.open(QIODevice::ReadOnly)) {
        // 使用 loader 加载 UI 文件
        QDialog *dialog = loader.load(&file);
        if (dialog) {
            dialog->show(); // 直接显示,不需要 exec()
        }
        file.close();
    }
    return app.exec();
}

这种方法需要将 .ui 文件作为资源文件添加到项目中,或者在运行时提供正确的路径。


第五部分:进阶技巧

1 伙伴编辑器

伙伴编辑器用于为标签和输入框建立关联,这样当用户按下 Alt + 标签文本中的字母时,焦点会自动跳转到对应的输入框。

  1. 选中一个标签(如 labelUsername)。
  2. 在 Property Editor 中找到 buddy 属性。
  3. 点击右侧的下拉箭头,选择它对应的输入框(lineEditUsername)。
  4. 修改标签的 text 属性,&User Name,这样 U 字母下划线,按 Alt+U 就能聚焦到输入框。

2 样式表

样式表是 Qt 的 CSS 实现,功能强大,除了简单的背景色和字体,你还可以:

  • 设置图片背景:background-image: url(:/images/my_image.png);
  • 为不同状态的控件设置不同样式:QPushButton:pressed { background-color: red; }
  • 设置边框、阴影等复杂效果。

3 自定义控件

如果你有自定义的 QWidget 子类,你也可以将它集成到 Qt Designer 中,这样就可以像使用标准控件一样拖放它,这需要实现一些特定的接口,并生成一个 .plugins 文件。

4 信号与槽

虽然 Qt Designer 主要用于设计静态界面,但它也支持预览信号和槽的连接。

  1. 进入 编辑 -> 编辑信号/槽 模式。
  2. 从一个控件(如按钮)拖动到另一个控件或窗体本身。
  3. 在弹出的对话框中选择一个信号(如 clicked())和一个槽(如 close()),点击 "OK"。
  4. 这个连接会被保存到 .ui 文件中,并在运行时自动建立,这对于快速原型验证非常有用。

第六部分:总结与资源

Qt Designer 是 Qt 开发中不可或缺的工具,通过它,你可以:

  1. 快速创建美观且响应式的用户界面。
  2. 分离关注点,让 UI 设计和逻辑代码清晰分离。
  3. 利用布局系统,轻松实现跨平台的自适应界面。

掌握 Qt Designer 是迈向高效 Qt 开发的第一步。

推荐资源

  • 官方文档:Qt Assistant(随 Qt 安装)中的 "Qt Designer Manual" 是最权威的参考资料。
  • Qt 官方示例:Qt Creator 自带了许多使用 Qt Designer 的示例,非常值得学习。
  • 视频教程:在 Bilibili、YouTube 等平台搜索 "Qt Designer",可以找到大量中文和英文的视频教程。
  • 社区:在 Stack Overflow、Qt 中文论坛等社区提问,可以获得快速的帮助。

希望这份详细的教程能帮助你顺利上手 Qt Designer!

分享:
扫描分享到社交APP
上一篇
下一篇