二、UI文件设计与运行机制

一、UI文件设计与运行机制

1、创建工程

在这里插入图片描述
在这里插入图片描述

2、添加控件,实现按钮点击

(1)添加控件

在这里插入图片描述

(2)添加信号和槽

在这里插入图片描述

2、分析项目结构

test_02test_02.pro			Qt工程文件Headerswidget.h		设计的窗体类的头文件Sourcesmain.cpp		主程序入口文件widget.cpp		窗体类的实现文件Formswidget.ui		界面文件,使用XML格式描述远见及布局../build-xxx/ui_widget.h	组件、信号与槽实现的文件,根据ui界面文件编译自动生成

(1)项目管理文件

后缀为.pro
# 包含的模块
QT       += core gui
# 大于Qt4版本才包含widget模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 应用程序的名称,生成可执行程序的名称
TARGET = test_02
# 模板类型,应用程序模板
TEMPLATE = app# 定义编译选项
#  QT_DEPRECATED_WARNINGS:当Qt的某些功能被标记为过时的,那么编译器会发出警告
DEFINES += QT_DEPRECATED_WARNINGS# 编译器版本
CONFIG += c++11
# 源文件
SOURCES += \main.cpp \widget.cpp
# 头文件
HEADERS += \widget.h
# Form文件
FORMS += \widget.ui

(2)ui文件

由UI设计器自动生成,存储了组件和布局

在这里插入图片描述

(3)主函数文件

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);		// 定义并创建应用程序Widget w;						// 定义并创建窗口w.show();						// 显示窗口return a.exec();				// 应用长须运行,开始消息循环和事件处理
}

(4)widget类

// 头文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;	// ui_widget.h文件定义的类,外部声明
}class Widget : public QWidget
{Q_OBJECT 	// 宏,使用Qt信号与槽机制必须添加
public:explicit Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;	// Ui::Widget类型的一个指针,指向可视化界面
};
#endif // WIDGET_H
// 源文件
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);	// 实现了组件的各种设置、信号与槽的关联,即ui_widget.h文件中实现方法
}Widget::~Widget()
{delete ui;
}

(5)ui_widget.h文件

#ifndef UI_WIDGET_H
#define UI_WIDGET_H#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>QT_BEGIN_NAMESPACEclass Ui_Widget
{
public:QLabel *labDemo;QPushButton *bntClose;void setupUi(QWidget *Widget){	// 组件对象创建、信号和槽关联if (Widget->objectName().isEmpty())Widget->setObjectName(QString::fromUtf8("Widget"));Widget->resize(400, 300);labDemo = new QLabel(Widget);labDemo->setObjectName(QString::fromUtf8("labDemo"));labDemo->setGeometry(QRect(50, 90, 71, 41));QFont font;font.setPointSize(15);labDemo->setFont(font);bntClose = new QPushButton(Widget);bntClose->setObjectName(QString::fromUtf8("bntClose"));bntClose->setGeometry(QRect(310, 20, 75, 23));retranslateUi(Widget);QObject::connect(bntClose, SIGNAL(clicked()), Widget, SLOT(close()));QMetaObject::connectSlotsByName(Widget);} // setupUivoid retranslateUi(QWidget *Widget){Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));labDemo->setText(QCoreApplication::translate("Widget", "\346\265\213\350\257\225", nullptr));bntClose->setText(QCoreApplication::translate("Widget", "\345\205\263\351\227\255", nullptr));} // retranslateUi};namespace Ui {class Widget: public Ui_Widget {};	//widget类中指针的类型
} // namespace UiQT_END_NAMESPACE#endif // UI_WIDGET_H

二、可视化UI设计

实现一个程序实现:一个文本显示;三个复选框分别设置下划线、斜体、粗体;三个单选分别为红、绿、蓝三色;一个关闭按钮。

1、创建工程(基于QDialog,对话框)

2、添加组件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、添加信号和槽

(1)关闭按钮

在这里插入图片描述

(2)通过组件实现复选框槽函数功能

在这里插入图片描述
在这里插入图片描述

void Dialog::on_checkBoxUnderline_clicked(bool checked)
{QFont font = ui->plainTextEdit->font();font.setUnderline(checked);ui->plainTextEdit->setFont(font);
}void Dialog::on_checkBoxItalix_clicked(bool checked)
{QFont font = ui->plainTextEdit->font();font.setItalic(checked);ui->plainTextEdit->setFont(font);
}void Dialog::on_checkBoxBold_clicked(bool checked)
{QFont font = ui->plainTextEdit->font();font.setBold(checked);ui->plainTextEdit->setFont(font);
}

在这里插入图片描述

(3)添加自定义槽函数,关联信号

实现槽函数
void Dialog::setTextFontColor()
{QPalette plet = ui->plainTextEdit->palette();plet.setColor(QPalette::Text, Qt::black);if(ui->radioButtonRed->isChecked()){plet.setColor(QPalette::Text, Qt::red);}else if (ui->radioButtonGreen->isChecked()) {plet.setColor(QPalette::Text, Qt::green);}else if (ui->radioButtonBlue->isChecked()) {plet.setColor(QPalette::Text, Qt::blue);}ui->plainTextEdit->setPalette(plet);
}
关联槽函数和消息
Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);QObject::connect(ui->radioButtonRed, SIGNAL(clicked()), this, SLOT(setTextFontColor()));QObject::connect(ui->radioButtonGreen, SIGNAL(clicked()), this, SLOT(setTextFontColor()));QObject::connect(ui->radioButtonBlue, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
}

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

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

相关文章

C++_find 统计一个单词 在一段文中出现的次数

注解: 使用y.find(x, n)从位置n开始在字符串y中查找子串x首次出现的位置。如果找到了子串x&#xff0c;则find()函数会返回该子串在y中的起始索引&#xff08;位置&#xff09;&#xff0c;否则返回-1&#xff08;或npos&#xff09;表示未找到。当find()函数返回非-1值时&…

DHTMLX Spreadsheet v5.1.1 Crack

DHTMLX Spreadsheet 5.1 具有新主题、简化的数字格式本地化、与框架的实时集成演示等 推出 DHTMLX Spreadsheet v5.1。新版本提供了一组有用的功能&#xff0c;这对开发人员和最终用户都有吸引力。 首先&#xff0c;新的电子表格版本提供了 4 个内置主题&#xff0c;可以根据您…

VS2022 创建windows服务-Windows Service

vs2022 2023等版本出现&#xff0c;似乎被忘记的早期的Windows Service服务是如何创建的呢&#xff1f;本文介绍了如何用新版本VS进行C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项。windows服务可以在windows中自动运行。 一、创建一个Windows …

Netty实战(待完善)

Netty组件 1. Bootstrap, ServerBootstrap Netty 中 Bootstrap 类是客户端程序的启动引导类&#xff0c;ServerBootstrap 是服务端启动引导类。 2. NioEventLoop, NioEventLoopGroup NioEventLoop 中维护了一个线程和任务队列&#xff0c;支持异步提交执行任务&#xff0c;…

全面开花!聚铭网络入选《ISC 2023数字安全创新能力全景图谱》10大细分领域

日前&#xff0c;《ISC 2023数字安全创新能力全景图谱》重磅出炉&#xff0c;聚铭网络凭借多元化的产品和卓越的创新能力&#xff0c;成功上榜全景图10大细分领域&#xff0c;多项细分领域的入围再一次彰显了聚铭网络过硬的综合安全实力。 据悉&#xff0c;此次全景图是ISC平台…

修改选择框el-select样式,显示及下拉样式

修改选择框el-select样式,显示及下拉样式 .el-input__inner {background: rgba(25, 126, 195, 0.2);border: none;color: #fff; }.el-select-dropdown {background: rgba(19, 73, 104, 0.79);border: 2px solid #48e3ff;border-radius: 0; }.el-popper .popper__arrow {display…

厦门大学OpenHarmony技术俱乐部开创“1+N”新模式,加速推动产学研融合

12月29日,OpenHarmony技术俱乐部再添重将——在多方见证下,厦门大学OpenHarmony技术俱乐部在翔安校区益海嘉里楼报告厅正式揭牌成立,现场出席领导及师生代表近千人。 成立仪式现场 OpenHarmony技术俱乐部 携手厦门大学共绘开源生态新图景 OpenHarmony是由开放原子开源基金…

可视化工作流任务管理

​Leangoo领歌一款永久免费的看板管理工具。提供私有部署。 Leangoo领歌覆盖了敏捷研发全流程&#xff0c;它提供端到端敏捷研发管理解决方案&#xff0c;包括小型团队敏捷开发&#xff0c;规模化敏捷SAFe&#xff0c;Scrum of Scrums大规模敏捷&#xff0c;涵盖敏捷需求管理、…

OpenFeign相关面试题及答案(2024)

1、什么是OpenFeign&#xff0c;它如何简化远程服务调用&#xff1f; OpenFeign是一个声明式的Web服务客户端&#xff0c;它使得编写HTTP客户端变得更加容易。它属于Spring Cloud Netflix项目的一部分&#xff0c;可以与Spring Boot应用轻松集成。通过使用OpenFeign&#xff0…

JavaFX:MVC模式学习01-使用PropertyValueFactory将模型与视图绑定

PropertyValueFactory类是“TableColumn cell value factory”,绑定创建列表中的项。示例如下&#xff1a; TableColumn<Person,String> firstNameCol new TableColumn<Person,String>("First Name");firstNameCol.setCellValueFactory(new PropertyVal…

three.js使用正方体加图片实现全景看房效果

three.js使用正方体加图片实现全景看房效果 实现方法 创建一个正方体加载6张纹理贴图正方体z轴缩放-1调整相机位置 图例 代码 <template><div class"app"><div ref"canvesRef" class"canvas-wrap"></div></div&g…

智能分析网关V4如何在播放时设置是否显示算法区域?具体操作是什么?

AI智能分析网关V4是TSINGSEE青犀视频旗下的一款高效的边缘计算分析网关&#xff0c;可实现人体行为检测、车辆事件检测、环境卫生检测与消防事件检测等&#xff0c;广泛应用在工地、工厂、园区、楼宇、校园、仓储等场景中。将智能分析网关V4结合我们的视频融合平台EasyCVR一起使…