【QT】混合UI设计

这篇具有很好参考价值的文章主要介绍了【QT】混合UI设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

虽然利用Designer和代码的设计方式都可以开发GUI,但是毫无疑问的是最有效的开发方式是利用两者进行混合开发。

下面这个实验例子来自《QT5.9 C++开发指南》,我做了小部分修改,最终效果是这样:

【QT】混合UI设计,QT,ui,qt,开发语言

图标导入

这次我们要开发的是一个有工具栏、菜单栏、标题栏等组成的GUI,所以毫无疑问我们需要选取的基类是Mainwindow。

因为我们看到工具栏里很多地方都有图标的参与,所以我们第一步需要先将要用到的图标导入到QT中。所以我们需要先在项目下面新建一个Qt Resource File。

【QT】混合UI设计,QT,ui,qt,开发语言

然后再点击左下角的添加->添加前缀,先为我们的图标添加一个存储的文件夹及其名称,这里我的前缀是/img。然后就可以再次按添加->添加文件了。

【QT】混合UI设计,QT,ui,qt,开发语言

静态组件布置

将我们的文件添加进来后,我们就可以先用Designer对我们的UI进行初步设计了。我们首先是进行静态组件的布置,但是这里我们需要引入一个新的抽象类Action。我们可以初步将其理解为也是一个控件,它是多用于菜单栏、工具栏和状态栏上的事件触发控件,常用于mainwindow基类中。因为我们可能需要用到一些在工具栏上的控件,所以我们需要使用到Action。

如果我们想创建一个Action的类,我们需要打开Designer界面下面的Action Editor栏,点击那一栏左上角的新建Action控件。

【QT】混合UI设计,QT,ui,qt,开发语言

 【QT】混合UI设计,QT,ui,qt,开发语言

新建Action控件的框有一些选项需要我们输入,首先是文本,它将显示该Action控件所显示的文字;其次是对象名称Object name,它表示该类的对象名;再者是Tooltip,它表示当我们鼠标移到该控件后所显示的提示文字;然后是图标,图标我们可以直接从我们之前导入的图片中选取;还有就是Checkable,它将表示我们新创建的Action是否是一个复选按钮;最后就是shortcut快捷键设置了。

当我们设置好这些后,我们就可以得到下面的栏:

【QT】混合UI设计,QT,ui,qt,开发语言

然后我们就可以在在中间设计区域鼠标右键创建一个工具栏和任务栏,再将这些Action拖上去:

【QT】混合UI设计,QT,ui,qt,开发语言

【QT】混合UI设计,QT,ui,qt,开发语言

 但是有时候我们拖上去工具栏的图标不一定同时是显示图标和文字,这与工具栏的设置风格有关,我们可以通过调整下面位置的内容来进行修改:选中工具栏,找到按钮风格,选择文字显示于按钮下方的风格(这里比较常用的风格有:ToolButtonIconOnly-只显示图标、ToolButtonTextOnly-只显示文字、ToolButtonTextUnderIcon-文字于图片下方、ToolButtonTextBesideIcon-图片于文字隔壁\)设置好并且拖好各个Action到菜单栏和工具栏后即可得到新的GUI。

【QT】混合UI设计,QT,ui,qt,开发语言

 【QT】混合UI设计,QT,ui,qt,开发语言

 接下来就是需要设置一个调整字体大小和字体类型的控件了。实际上,存放数字的控件是spinbox,而存放不同字体的控件是fontcombox,但是当我们往窗口工具栏上拖拽这些控件时我们会发现它拒绝了!这里就体现了Designer设计的局限性,一些控件无法被放置到工具栏、菜单栏、状态栏等地方。所以下面的控件就需要我们自己通过代码的方式手动添加到相应的位置。

接下来我们要添加的是四个控件它们分别是:

①位于状态栏的标签

②位于状态栏的加载进度条

③位于工具栏的数字选择器

④位于工具栏的字体选择器

⑤位于工具栏的分隔符

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //setCentralWidget();
    lab = new QLabel("当前文件:");
    lab->setMinimumWidth(150);
    ui->statusBar->addWidget(lab);

    pro = new QProgressBar();
    pro->setMinimum(5);
    pro->setMaximum(50);
    pro->setMinimumWidth(500);
    pro->setValue(9);
    ui->statusBar->addWidget(pro);
    ui->toolBar->addSeparator();
    spin = new QSpinBox();
    spin->setMaximum(50);
    spin->setMinimum(0);
    spin->setMinimumWidth(50);
    ui->toolBar->addWidget(new QLabel("字体大小:"));
    ui->toolBar->addWidget(spin);

    ui->toolBar->addSeparator();
    fon = new QFontComboBox();
    fon->setMaximumWidth(100);
    ui->toolBar->addWidget(new QLabel("字体:"));
    ui->toolBar->addWidget(fon);
    ui->toolBar->addSeparator();
}

MainWindow::~MainWindow()
{
    delete ui;
}

 最终做出来的效果是:

【QT】混合UI设计,QT,ui,qt,开发语言

信号函数与槽函数设置

前面我们已经完成了通过Designer和代码方式设计出了静态的页面,接下来就是参考如何将其的具体功能实现出来了。

首先是复制粘贴退出清空等具有系统默认槽函数的Action的设置,具体就是在Designer的信号与槽模块里面设置对应的函数即可。

 【QT】混合UI设计,QT,ui,qt,开发语言

然后我们可以先设置字形,具体是选定需要修改的Action按钮的位置,右键点击转到对应的槽写槽函数即可。但是要注意而Action的信号触发方式是triggered而不是clicked,所以我们使用信号函数的时候需要特别注意。

void MainWindow::on_blod_triggered(bool checked)
{
    QFont font = ui->textEdit->font();
    font.setBold(checked);
    ui->textEdit->setFont(font);
}

void MainWindow::on_underline_triggered(bool checked)
{
    QFont font = ui->textEdit->font();
    font.setUnderline(checked);
    ui->textEdit->setFont(font);
}

void MainWindow::on_Italic_triggered(bool checked)
{
    QFont font = ui->textEdit->font();
    font.setItalic(checked);
    ui->textEdit->setFont(font);
}

接下来我们需要修改的是字体和字的大小,我们分别按照之前写字形的方式写对应的槽函数即可,但是要着重注意触发的信号函数即可。比如字数变化触发的信号函数就是valueChanged,而字体变化是currentIndexChanged。并且它们信号函数触发的传递参数一个是字数大小,一个是选择的字体,所以对应槽函数参数也需要进行一定修改。

void MainWindow::change_size(int size)
{
    QFont font = ui->textEdit->font();
    font.setPointSize(size);
    ui->textEdit->setFont(font);
    pro->setValue(size);
}

void MainWindow::change_family(QString family)
{
    ui->textEdit->setFontFamily(family);
}

------------------------------------------------
QObject::connect(spin,SIGNAL(valueChanged(int)),
this,SLOT(change_size(int)));
QObject::connect(fon,SIGNAL(currentIndexChanged(QString)),
this,SLOT(change_family(QString)));

整个最后呈现出来的效果如下图:

【QT】混合UI设计,QT,ui,qt,开发语言

 【QT】混合UI设计,QT,ui,qt,开发语言文章来源地址https://www.toymoban.com/news/detail-530434.html

到了这里,关于【QT】混合UI设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt Designer UI设计布局小结

    前言 本文总结了在开发Qt应用程序时使用 Designer 进行UI布局的一些心得体会。Qt Designer是Qt提供的一个可视化界面设计工具,旨在帮助开发人员快速创建和布局用户界面。它提供了丰富的布局管理器和控件,并支持直观的拖拽和放置操作,使得UI设计变得简单而高效。下面将按

    2024年02月09日
    浏览(49)
  • Qt教程 — 2.1 如何使用Qt Designer 开发UI程序

    目录 1 Qt Designer简介 2 编辑UI界面 2.1 在 UI 界面添加一个Label 2.2 在 UI 界面添加一个按钮 2.3 在 UI 文件里连接信号与槽 方法一:通过信号和槽编辑栏 方法二:通过导航区信号和槽编按钮 方法三:通过跳转编辑代码实现—通过按钮输出文字 Qt Designer 是属于 Qt Creator 的一个功能

    2024年03月22日
    浏览(56)
  • [编程语言][C++][Qt]单独添加UI文件

    不知什么原因,Qt Creator并不是很完美很智能。当先写好界面类的头文件和源代码文件后,我们再添加用于可视化界面设计的UI文件时,会出现一些问题。 当使用CMake管理项目时,CMake会读取 CMakeLists.txt 文件来确定各种项目设置。需要把 MainWindow.ui 包含进项目时,在 CMakeLists.

    2024年02月07日
    浏览(46)
  • Qt5.9 UI设计(七)——统一样式设计

    前面已经将UI设计部分实现,各页面也做了最简单的设计,本章介绍一下qss样式的使用。样式设计最终的显示效果如下图: 将stylesheet.qss 样式文件添加进工程 stylesheet.qss 内容如下: 为应用程序添加LOGO图标 加载统一样式 最终设计效果如下图,到这里简单的UI设计部分已经实现

    2023年04月16日
    浏览(87)
  • 嵌入式 QT纯代码设计UI

        目录 1.1 实例功能 1.2 界面创建 1.3 界面组件的创建与布局 1.4 信号与槽的关联 UI 的可视化设计是对用户而言的,其实底层都是 C++ 的代码实现,只是 Qt 巧妙地进行了处理,让用户 省去了很多繁琐的界面设计工作。   由于界面设计的底层其实都是由 C++ 语言实现的,底层

    2024年03月09日
    浏览(56)
  • 【Qt】如何在Qt应用程序中使用设计好的UI文件

    本质上,Qt Designer的ui文件是一个以XML格式书写的文件,文件中内容描述了一个界面的widget关系树。这个文件在以下两种情况下会使用到: (1)在编译的时候,这意味着ui文件将被转换为可编译的c++代码,这个过程由 uic 完成。 (2)在应用程序运行的时候,ui文件将由 QUiLoa

    2024年01月16日
    浏览(48)
  • Python QT5设计UI界面教程

    简介:PyQT5开发常用知识,零基础上手,需配合我之前写的博文,配置好QT设计工具和ui文件转py文件的工具。博文为:使用Python PyQt5实现一个简单的图像识别软件;页面效果如下: 1.设计菜单栏 Containers——Tab Widget; 2.横向排布  可以自动水平对齐 3.文本框和选择框 4.日期输入

    2024年01月17日
    浏览(47)
  • qt中使用 ui 文件进行界面设计

    目录 1、创建 Qt 应用 ​2、项目创建成功 3、直接点击打开 mainwindow.ui 文件 4、随便从左边侧边栏拖拽一个空间到 界面设计区域 5、在右侧边栏右键点击 pushButton 控件,点击转到槽 6、根据实际需要选择对应的信号,我这里方便演示选择 clicked()信号,直接点击 OK 7、自动在

    2024年02月04日
    浏览(43)
  • 【QT开发(5)】0919-QT里面新增ui类,新增使用opencv读取图片的普通类,在ui类中显示图片

    1、Qt Creator快速入门_第三版__霍亚飞编著 2、《Qt+OpenCV显示图片(Mat转QImage然后显示在QLabel上)》 https://gitee.com/hiyanyx/qt5.14-cpp_-empty_-project/tree/Study2023-section5/ git分支“Study2023-section5” 新增ui类 新增使用opencv读取图片的普通类 为了更加方便,可在QT 中添加普通类,这样会自动生

    2024年02月07日
    浏览(47)
  • Qt designer设计UI实例:双视图立体匹配与重建的可视化UI

    PyQt5和Qt designer的详细安装教程 :https://blog.csdn.net/qq_43811536/article/details/135185233?spm=1001.2014.3001.5501 Qt designer界面和所有组件功能的详细介绍 :https://blog.csdn.net/qq_43811536/article/details/135186862?spm=1001.2014.3001.5501 输入 :一对左右眼视图的图像。 任务 :对输入的一对带相机参数的左

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包