1、混合方式UI设计

1、混合方式UI设计

  • 新建项目
    • 添加静态资源
    • 添加资源
    • 添加action
    • 添加菜单
      • 菜单栏
      • 工具栏
      • 中间编辑区域
    • 代码添加其他组件
      • 字体和大小
      • 状态栏
    • 添加槽函数
      • UI设置的
      • 转到槽的
      • 手写的
      • 设置应用程序图标
  • 代码

新建项目

  1. MainWindow代码文件夹
  2. 主窗口为 (QMainWindow)

添加静态资源

  1. AppIcon.ico
  2. images下的所有图标

添加资源

项目名称->右键->add new->qt->qt resource file->名称随便写
生成一个xx.qrc文件

  • 前缀为 /
  • 等修改时,直接右键qrc文件->添加现有文件
  • images和Application.ico同目录

添加action

  • xx.ui文件
  • 下方有一个action editor工具栏
  • 位置:控件 - 试图 - action editor
  • 新建action*(第一个按钮)
1. 文本(显示的名字):新建
2. 对象名称:actNew
3. tooltip(光标在的提示):新建
4. checkabled:选中状态,比如选中为粗体,不选中则不是粗体
5. shortcut:快捷键  ctl+n

以此类推

添加菜单

右边mainwindow中有两个对象:menubar和statusbar 菜单栏和状态栏
菜单栏只有一个
工具栏toolbar可以有多个

1. windowTitle:混合方式设计主窗口

菜单栏

文件:新建、打开、分隔符、退出
编辑:剪切、赋值、粘贴、清空
格式:斜体、粗体、下划线
查看:工具栏、状态栏
帮助:关于

在xx.ui中,左上角有一个在这里输入
这里会在menubar下添加子对象

输入汉字:文件 
后回车
依次输入  文件、编辑、格式、查看、帮助

将预创建的action,选中拖到指定的菜单栏中,上面出现红线,鼠标出现加号即可
会在menubar下的子对象生成子对象

工具栏

窗口右键 - 添加工具栏

还是将action拖拽过去,出现红色竖线

中间编辑区域

QTextEditor

代码添加其他组件

字体和大小

QLabel
QSpinBox
QFontLambox

头文件

#include <QLabel>
#include <QSpinBox>
#include <QFontComboBox>private:void initUI();//声明初始化UI的函数QLabel* labelCurFile;//状态栏的当前文件QSpinBox* spinFontSize;//工具栏 选择字体大小QFontComboBox* fCmbFont;//工具栏 字体选择下拉菜单

状态栏

添加槽函数

UI设置的

最下方有一个signals_slots editor工具栏,可以图形化设置

转到槽的

在下方action editer 选中一个action,右键转到槽
粗体、斜体、下划线 选择代bool参数的triggered(bool)

textEditor 右键转到槽,选中内容变化

手写的

设置应用程序图标

打开pro文件 尾部追加

RC_ICONS = AppIcon.ico

或者
ui中windowsIcon选择文件

代码

.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QLabel>
#include <QSpinBox>
#include <QFontComboBox>
#include <QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
private:void initUI();
private slots:// 自定义槽函数void onSpinFontsizeValueChanged(int fontSize);void onFCmbFontCurrentIndexChanged(const QString& font);void on_actFontBold_triggered(bool checked);void on_actFontItalic_triggered(bool checked);void on_actFontUnderline_triggered(bool checked);void on_textEdit_selectionChanged();void on_textEdit_copyAvailable(bool b);void on_actToolbar_triggered(bool checked);void on_actStatusBar_triggered(bool checked);void on_actAbout_triggered();private:Ui::MainWindow *ui;QLabel* labelCurFile;//状态栏的当前文件QSpinBox* spinFontsize;//工具栏 选择字体大小QFontComboBox* fCmbFont;//工具栏 字体选择下拉菜单
};
#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setCentralWidget(ui->textEdit);//设置为主窗口的中心框架initUI();// 信号和槽函数的连接connect(spinFontsize,SIGNAL(valueChanged(int)), this, SLOT(onSpinFontsizeValueChanged(int)));//字体大小值变化connect(fCmbFont,SIGNAL(currentIndexChanged(QString)), this, SLOT(onFCmbFontCurrentIndexChanged(QString)));//字体当前编号变化
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::initUI(){ui->actCut->setEnabled(false);ui->actCopy->setEnabled(false);ui->actPaste->setEnabled(false);// 状态栏上的labellabelCurFile = new QLabel("当前文件:");labelCurFile->setMinimumWidth(350);ui->statusbar->addWidget(labelCurFile); // 添加到状态栏// 工具栏// 选择字体大小的选值框spinFontsize = new QSpinBox;spinFontsize->setRange(8,50); // 设置字号的取值范围spinFontsize->setValue(ui->textEdit->font().pointSize());spinFontsize->setMinimumWidth(50);spinFontsize->setMaximumWidth(80);// 选择字体的下拉列表fCmbFont = new QFontComboBox;fCmbFont->setMinimumWidth(150);// 将控件添加到工具栏ui->toolBar->addWidget(new QLabel("  字体大小:"));ui->toolBar->addWidget(spinFontsize);ui->toolBar->addWidget(new QLabel("  字体:"));ui->toolBar->addWidget(fCmbFont);ui->actToolbar->setChecked(true);ui->actStatusBar->setChecked(true);
}
// "粗体"
void MainWindow::on_actFontBold_triggered(bool checked)
{QTextCharFormat fmt;if(checked)fmt.setFontWeight(QFont::Bold);elsefmt.setFontWeight(QFont::Normal);ui->textEdit->mergeCurrentCharFormat(fmt);
}
// "斜体"
void MainWindow::on_actFontItalic_triggered(bool checked)
{QTextCharFormat fmt;fmt.setFontItalic(checked);ui->textEdit->mergeCurrentCharFormat(fmt);
}
// "下划线"
void MainWindow::on_actFontUnderline_triggered(bool checked)
{QTextCharFormat fmt;fmt.setFontUnderline(checked);ui->textEdit->mergeCurrentCharFormat(fmt);
}
// 更新 粗体、斜体、下滑线 三个按钮的 checked属性
void MainWindow::on_textEdit_selectionChanged()
{QTextCharFormat fmt;fmt = ui->textEdit->currentCharFormat();ui->actFontBold->setChecked(fmt.font().bold());   // "粗体"是否选中ui->actFontItalic->setChecked(fmt.fontItalic());  // "斜体"是否选中ui->actFontUnderline->setChecked(fmt.fontUnderline()); // "下划线"是否选中spinFontsize->setValue(ui->textEdit->currentFont().pointSize()); // 字号fCmbFont->setCurrentText(fmt.fontFamily()); // 字体
}
// 更新 cut、copy、paste的 enabled属性  释放可复制
void MainWindow::on_textEdit_copyAvailable(bool b)
{ui->actCut->setEnabled(b);ui->actCopy->setEnabled(b);ui->actPaste->setEnabled(ui->textEdit->canPaste());
}void MainWindow::on_actToolbar_triggered(bool checked)
{ui->toolBar->setHidden(!checked);
}void MainWindow::on_actStatusBar_triggered(bool checked)
{ui->statusbar->setHidden(!checked);
}void MainWindow::on_actAbout_triggered()
{QMessageBox::about(this,"关于","版本:1.0\n版权所有:问问啧啧啧");
}
// 改变字体大小
void MainWindow::onSpinFontsizeValueChanged(int fontSize)
{QTextCharFormat fmt;fmt.setFontPointSize(fontSize);  // 设置字体大小ui->textEdit->mergeCurrentCharFormat(fmt);
}
// 选择字体
void MainWindow::onFCmbFontCurrentIndexChanged(const QString& fontFamily)
{QTextCharFormat fmt;fmt = ui->textEdit->currentCharFormat();fmt.setFontFamily(fontFamily);ui->textEdit->mergeCurrentCharFormat(fmt);//    QFont font;
//    font.setPointSizeF(pointSize);
//    font.setWeight(weight);
//    font.setItalic(isItalic);
//    font.setUnderline(fmt.fontUnderline());
//    ui->textEdit->setCurrentFont(font);//    fmt = ui->textEdit->currentCharFormat();
//    double pointSize = fmt.fontPointSize();//字号
//    int weight = fmt.fontWeight();//是否加粗
//    bool isItalic = fmt.fontItalic();//是否斜体
//    QFont font(fontFamily,int(pointSize),weight,isItalic);
//    font.setUnderline(fmt.fontUnderline());
//    ui->textEdit->setCurrentFont(font);}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/215980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scikit-learn-feature_selection

参考&#xff1a; Feature selection 1. 移除低方差的特征 方差低&#xff0c;说明变化不大。 将特征方差值小于一定值的特征移除 单变量特征分析 通过单特征分析&#xff0c;选择最好的&#xff08;前k个&#xff09;的特征&#xff0c;scikit-learn 提供的方法有&#x…

基于JAVA+SpringBoot+Vue的前后端分离的旅游网站

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 近年来&#xff0c;随…

IntelliJ IDEA 自带的 HTTP Client接口调用插件,替代 Postman

文章目录 引言建议目录结构新建请求不同环境的变量配置添加环境http-client.env.jsonhttp-client.private.env.json引用变量 请求示例Get请求示例Post请求示例鉴权示例断言示例Websocket请求示例 内置对象和动态变量内置对象&#xff1a;内置变量&#xff1a; 引言 在日常的 W…

关于引用unpkg.com的mars3d相关依赖文件报错无法请求的说明

问题来源&#xff1a; 1.关于引用unpkg.com的mars3d相关依赖文件报错无法请求的说明 说明&#xff1a; 1.最近npm、unpkeg都访问异常&#xff0c;可能是unpkg.com等国外的服务器不稳定导致的请求未响应。 解决方案&#xff1a; 1.请切换静态文件引入的方式请求相关资源。参…

LaTex:如何在数学环境下打出大的右括号“}“

一般来说多行公式打左大括号都知道使用语法"cases" \begin{cases} foo\\ foo\\ \end{cases}最近需要键入右边大花括号括起来公式的时候犯难了&#xff0c;搜了很多用的都是"\left.array\right}"&#xff0c;看得我昏迷&#xff0c;屡屡报错。 突然想起很久…

selenium自动化(中)

显式等待与隐式等待 简介 在实际工作中等待机制可以保证代码的稳定性&#xff0c;保证代码不会受网速、电脑性能等条件的约束。 等待就是当运行代码时&#xff0c;如果页面的渲染速度跟不上代码的运行速度&#xff0c;就需要人为的去限制代码执行的速度。 在做 Web 自动化时…

PS背景色替换

1.打开ps后右键图层复制 2.隐藏复制的图层&#xff0c;选择魔术橡皮擦擦掉不用替换的颜色 3.选中图层后选择颜色叠加修改图层颜色

机器学习-SVM(支持向量机)

推荐课程&#xff1a;【机器学习实战】第5期 支持向量机 |数据分析|机器学习|算法|菊安酱_哔哩哔哩_bilibili 赞美菊神ヾ ( ゜ⅴ゜)&#xff89; 一、什么是支持向量机&#xff1f; 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一类按监督学习&#xff0…

【神行百里】pandas查询加速之行索引篇

最近进行大数据处理的时候&#xff0c;发现我以前常用的pandas查询方法太慢了&#xff0c;太慢了&#xff0c;真是太慢了&#xff0c;查阅资料&#xff0c;遂发现了一种新的加速方法&#xff0c;能助力我飞上天&#xff0c;和太阳肩并肩&#xff0c;所以记录下来。 1. 场景说明…

跨境独立站优势包括哪些?是否值得做呢?

跨境独立站的优势主要包括&#xff1a; 自主品牌建设&#xff1a;独立站可以更好地展示自主品牌形象&#xff0c;提高品牌知名度和美誉度。 独立域名&#xff1a;独立站可以拥有自己的域名&#xff0c;更加稳定和可信。 自主运营&#xff1a;独立站可以自主运营&#xff0c;包…

低版本echarts的升级到新版5.4.0的echarts浏览器预警和报错信息

新版5.4.0的echarts浏览器预警和报错信息 [ECharts] DEPRECATED: ‘normal’ hierarchy in itemStyle has been removed since 4.0. All style properties are configured in itemStyle directly now. 因为normal层被移除&#xff0c;问题代码如下图所示 itemStyle: {normal:…

MBR30200FCT-ASEMI大电流肖特基MBR30200FCT

编辑&#xff1a;ll MBR30200FCT-ASEMI大电流肖特基MBR30200FCT 型号&#xff1a;MBR30200FCT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 最大平均正向电流&#xff1a;30A 最大重复峰值反向电压&#xff1a;200V 产品引线数量&#xff1a;3 产品内部芯片个数&am…

系统韧性研究(7)| 韧性系统的16大指导原则

不良事件和条件可能会中断系统&#xff0c;导致系统无法提供必要的功能和服务。正如我在本系列的前几篇文章中所概述的那样&#xff0c;韧性是大多数系统的一个基本质量属性&#xff0c;因为它们提供了关键的能力和服务&#xff0c;尽管存在着不可避免的困难&#xff0c;但这些…

文件搜索项目知识介绍

项目背景SQLite介绍SQLite、驱动包下载SQLite使用SQLite和MySQL区别 JDBC搭配SQLiteJDBC原理-创建连接JDBC原理-关闭连接添加和发送SQLJDBC-事务开启和提交 打包.exe文件线程池线程数量问题 项目背景 需求上&#xff1a;因为Windows的文件搜索工具搜索速度十分的慢&#xff1b…

虚幻学习笔记11—C++结构体、枚举与蓝图的通信

一、前言 结构体的定义和枚举类似&#xff0c;枚举的定义有两种方式。区别是结构体必须以“F”开头命名&#xff0c;而枚举不用。 额外再讲了一下蓝图生成时暴露变量的方法。 二、实现 2.1、结构体 1、定义结构体 代码如下&#xff0c;注意这个定义的代码一定要在“UCLASS()”…

从零构建属于自己的GPT系列6:模型本地化部署2(文本生成函数解读、模型本地化部署、文本生成文本网页展示、代码逐行解读)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1&#xff1a;数据预处理 从零构建属于自己的GPT系列2&#xff1a;模型训…

ThinkPHP连接ORACLE数据库教程

目录 概念基本步骤详细操作问题排除参考 概念 要连接Oracle数据库&#xff0c;必须有两个东西&#xff0c;一个PHP官方写的扩展&#xff0c;一个Oracle官方写的客户端PHP是通过扩展去操作oralce客户端连接的服务端数据库&#xff0c;所以两个都不能少&#xff0c;而且版本必须…

大数据讲课笔记1.4 进程管理

文章目录 零、学习目标一、导入新课二、新课讲解&#xff08;一&#xff09;进程概述1、基本概念2、三维度看待进程3、引入多道编程模型&#xff08;1&#xff09;CPU利用率与进程数关系&#xff08;2&#xff09;从三个视角看多进程 4、进程的产生和消亡&#xff08;1&#xf…

5V低压步进电机驱动芯片GC6150,应用于摄像机,机器人 医疗器械等产品中。具有低噪声、低振动的特点

GC6150是双通道5V低压步进电机驱动器&#xff0c;具有低噪声、低振动的特点&#xff0c;特别适用于相机变焦对焦系统、万向架、摇头机等精度、低噪声STM控制系统&#xff0c;该芯片为每个通道集成了一个256微步的驱动器。通过SPI & T2C接口&#xff0c;客户可以方使地调整驱…

Python+Appium自动化测试之元素等待方法与重新封装元素定位方法

在appium自动化测试脚本运行的过程中&#xff0c;因为网络不稳定、测试机或模拟器卡顿等原因&#xff0c;有时候会出现页面元素加载超时元素定位失败的情况&#xff0c;但实际这又不是bug&#xff0c;只是元素加载较慢&#xff0c;这个时候我们就会使用元素等待的方法来避免这种…