QT纯代码设计UI界面Demo

article/2025/10/3 0:58:42

目录

一、前言

二、界面

三、源码简析

四、Demo/源码


一、前言

UI的设计方法有几种:

①一种是使用Qt Designer,也就是可视化设计,这在小型项目中常见,优点就是可观简便;

②另一种就是纯代码设计UI,也就是不可视设计UI,这在中大型项目常见,优点是界面隐蔽性强。

无论那种方式,实际上都是转化为第二种的方式,只是第一种是QT已经帮忙处理了,处理成第二种纯代码的形式。

本文简析纯代码设计UI的Demo,大家在项目中可以直接套用。

 

二、界面

界面设计很简便,两个label,两个button,button配槽函数,请配合源码看

 

三、源码简析

①源码结构

②工程里需要加入model

CUI.pro

QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = CUITEMPLATE = appSOURCES += main.cpp \CUI.cppHEADERS += \CUI.h

③在main里显示CUI界面类

main.cpp

#include <QApplication>
#include "CUI.h"int main(int argc, char *argv[])
{QApplication a(argc, argv); //注意是QApplicationCUI ui;ui.show();return a.exec();
}

④界面类的设计:

CUI.h

#ifndef CUI_H
#define CUI_H#include <QWidget>class CUI : public QWidget
{Q_OBJECTclass Impl;
public:explicit CUI(QWidget *parent = 0);~CUI();private slots:void stClickedbutton1();void stClickedbutton2();private://使用智能指针处理界面的内容QScopedPointer<Impl>    m_Impl;
};#endif // CUI_H

CUI.cpp

#include "CUI.h"
#include <QPushButton>
#include <QLabel>
#include <QGridLayout>//定义界面类的键和函数
class CUI::Impl
{
public:QLabel*             label_1;QPushButton*        button_1;QLabel*             label_2;QPushButton*        button_2;void setupUi(QWidget* parent);void retranslate(QWidget* parent);void signalSlot(QWidget* parent);
};//初始化布局
void CUI::Impl::setupUi(QWidget *parent)
{label_1 = new QLabel;button_1 = new QPushButton;label_2 = new QLabel;button_2 = new QPushButton;QGridLayout* glayReview = new QGridLayout(parent);glayReview->setContentsMargins(10, 10, 10, 10);glayReview->addWidget(label_1, 0, 0, 1, 1);glayReview->addWidget(button_1, 0, 1, 1, 1);glayReview->addWidget(label_2, 1, 0, 1, 1);glayReview->addWidget(button_2, 1, 1, 1, 1);retranslate(parent);signalSlot(parent);
}//初始化名称size等
void CUI::Impl::retranslate(QWidget* parent)
{label_1->setText("label_1");button_1->setText("button_1");label_2->setText("label_2");button_2->setText("button_2");label_1->setMinimumWidth(150);button_1->setMinimumWidth(100);label_2->setMinimumWidth(150);button_2->setMinimumWidth(100);parent->setFixedSize(250,250);
}//初始化信号槽
void CUI::Impl::signalSlot(QWidget *parent)
{connect(button_1, SIGNAL(clicked()), parent, SLOT(stClickedbutton1()));connect(button_2, SIGNAL(clicked()), parent, SLOT(stClickedbutton2()));
}CUI::CUI(QWidget *parent) :QWidget(parent),m_Impl(new Impl)
{//设置UIm_Impl->setupUi(this);
}CUI::~CUI()
{
}void CUI::stClickedbutton1()
{m_Impl->label_1->setText("label_1_change");
}void CUI::stClickedbutton2()
{m_Impl->label_2->setText("label_2_change");
}

四、Demo/源码

链接:https://pan.baidu.com/s/1IfprWv2D5nxA88yNFXlPLw 
提取码:pn49


http://chatgpt.dhexx.cn/article/Fy4XV654.shtml

相关文章

Verilog RTL 代码设计新手上路

1. 做一个4选1的mux&#xff0c;并且进行波形仿真 和2选1的mux对比&#xff0c;观察资源消耗的变化&#xff1a; 实验分析&#xff1a;4选1的mux实际上就是在2选1的mux上进行拓展&#xff0c;选用2位的控制信号控制4位输入信号的选择输出 实验代码设计如下&#xff1a; …

代码设计流程

一、需求分析 1、需求分析的三层境界&#xff1a;实现者、分析者、引导者。 2、在需求中提取到合适的用例&#xff08;以抽卡系统为例&#xff09; 3、用例分析法 5W1H分析法 对上面的“抽卡”用例进行分析如下 5W内容What抽取卡牌Who玩家When游戏服务器开启期间Where抽卡…

代码设计的内功——代码设计原则

引言 好代码是设计出来的&#xff0c;也是重构出来的&#xff0c;更是不断迭代出来的。在我们接到需求&#xff0c;经过概要设计过后就要着手进行编码了。但是在实际编码之前&#xff0c;我们还需要进行领域分层设计以及代码结构设计。那么怎么样才能设计出来比较优雅的代码结构…

二维傅里叶变换频谱图的含义

二维傅里叶变换频谱图的含义 在一维傅里叶变换得到的频谱图中&#xff0c;每个点表示其对应的幅度频率与其坐标对应的简谐波。二位傅里叶变换的频谱图&#xff0c;简谐波的振幅由对应点处对应的亮度表示&#xff0c;每一个点表示的波形为其对应的横纵坐标所表示的简谐波的叠加…

二维傅里叶变换深度研究-图像与其频域关系

一&#xff1a;二维傅里叶变换的数学原理 1.2D离散傅里叶公式解释&#xff1a; 那么&#xff0c;其F(u,v) 本质就是&#xff1a; 后续说明时的”频域”均指的其傅里叶功率谱&#xff0c;后面为了演示方便&#xff0c;所有频域图均经过了fftshift移动到中心位置。 2.2D傅里叶频…

使用matlab对图像进行二维傅里叶变换

这学期选了《图像工程基础》这门课&#xff0c;课上老师留了一个作业&#xff1a;对图像进行二维傅里叶变换。 现在我使用matlab解决这个问题 1.实验基本指令 首先我试了一下matlab图像处理的基本指令 原图&#xff1a; 经过以下指令后 将图片导入matlab后&#xff0c;命名…

二维离散傅里叶变换

在学完一维的傅里叶变换后&#xff0c;紧接着就是二维的傅里叶变换了。直接上干货吧&#xff01;&#xff01;&#xff01; 途中会用到opencv读取与显示图片。 一. 公式 M表示图像的行数&#xff0c;N表示图像的列数。 经过欧拉公式可以得一下形式&#xff0c;这样就可以轻松…

Matlab图像的二维傅里叶变换频谱图特点研究

一、先放一些相关的结论&#xff1a; 1、傅里叶变换的幅值称为傅里叶谱或频谱。 2、F(u)的零值位置与“盒状”函数的宽度W成反比。 3、卷积定理&#xff1a;空间域两个函数的卷积的傅里叶变换等于两个函数的傅里叶变换在频率域中的乘积。f(t)*h(t) <> H(u)F(u) 4、采…

OpenCV学习——图像二值化处理及二维傅里叶变换

小古在本学期选修了《计算机视觉原理与应用》&#xff0c;最近有一份作业 —— 利用matlab或者OpenCV对图像进行一些处理&#xff0c;由于完全没有接触过matlab和OpenCV,但是学习了一些python语言&#xff0c;所以便利用opencv-python来完成作业。 1 图像二值化处理 1.1 图像…

二维傅里叶变换是怎么进行的?

1.首先回顾一下一维FT 通俗来讲&#xff0c;一维傅里叶变换是将一个一维的信号分解成若干个三角波。 对于一个三角波而言&#xff0c;需要三个参数来确定它&#xff1a;频率,幅度 A &#xff0c;相位。因此在频域中&#xff0c;一维坐标代表频率&#xff0c;而每个坐标对应的…

二维傅里叶变换需知

from: https://blog.csdn.net/wenhao_ir/article/details/51037744 代码如下&#xff0c;这个代码是实现灰度图像作二维傅里叶变换后的非线性变换哈~ clear all; Iimread(coins.png); Ffft2((im2double(I))); Ffftshift(F); Fabs(F); Tlog(F1); subplot(1,2,1); imshow(F,[]…

傅里叶级数、一维傅里叶变换到二维傅里叶变换数理推导

傅里叶级数、一维傅里叶变换到二维傅里叶变换数理推导 参考资料&#xff1a; 如何理解傅里叶级数公式 二重傅里叶级数 从傅里叶级数到傅里叶变换 高维傅里叶变换的推导 连续傅里叶变换和离散傅里叶变换 二维离散傅里叶变换 IDL实现傅里叶变换 想要用傅里叶变换的思维处理一个…

二维傅里叶变换简化方式

在处理二维矩阵时&#xff0c;常想着如何把时域转换到频域来处理&#xff0c;因此翻来了以往数分里面的常用的傅里叶(Fourier Transform); &#xff08;Notes:一下公式中 M,N分别为二维矩阵的列数和行数&#xff0c;f(x,y) 代表改二维矩阵&#xff0c;F(u,v)为转换后的矩阵&…

C++中fftw库二维傅里叶变换笔记

目录 1.相关基础知识参考链接 2.二维傅里叶变换作用简介 3.FFTW二维傅里叶变换输出分析 &#xff08;1&#xff09;原始输出数据​ &#xff08;2&#xff09;频谱中心化后的输出数据 4.频谱图绘制 5.二维傅里叶变换逆变换 6.从输出结果中分离各平面波并画出波形平面图…

二维傅里叶变换的理解和使用

目录 似模似样的前言一维傅里叶二维傅里叶 似模似样的前言 最近的瑕疵检测项目需要在有纹理的产品上做很细致的检测。由于当前做项目使用的还是halcon居多&#xff0c;目前知道的方法还是傅里叶变换比较靠谱。 但仅靠halcon自带的样例并不能很好的理解和使用傅里叶&#xff0…

二维傅里叶变换频谱图的直观理解

众所周知&#xff1a;频谱中心代表低频&#xff0c;四周代表高频。 问&#xff1a;那&#xff08;u&#xff0c;v&#xff09;一点代表什么&#xff1f; 答&#xff1a; 1.当为水平方向的正弦图片时&#xff0c;二维傅里叶变换后&#xff0c;其只有u方向的频谱值&#xff1b; 2…

Matlab:二维傅里叶变换

Matlab:二维傅里叶变换 二维傅里叶变换二维衍射模式fft2 函数将二维数据变换为频率空间。例如,您可以变换二维光学掩膜以揭示其衍射模式。 二维傅里叶变换 以下公式定义 mn 矩阵 X 的离散傅里叶变换 Y。 i 是虚数单位,p 和 j 是值范围从 0 到 m–1 的索引,q 和 k 是值范围…

matlab二维傅里叶变换ffshift,形象理解二维傅里叶变换

点击上方“机器学习与生成对抗网络”,关注"星标" 获取有趣、好玩的前沿干货! 来自 | 知乎 阿姆斯特朗 链接 | https://zhuanlan.zhihu.com/p/110026009 文仅交流,侵删 1.回顾一下一维FT 公式: 通俗来讲,一维傅里叶变换是将一个一维的信号分解成若干个复指数波 …

傅里叶变换(二维离散傅里叶变换)

离散二维傅里叶变换 一常用性质&#xff1a; 可分离性、周期性和共轭对称性、平移性、旋转性质、卷积与相关定理&#xff1b; &#xff08;1&#xff09;可分离性&#xff1a; 二维离散傅里叶变换DFT可分离性的基本思想是DFT可分离为两次一维DFT。因此可以用通过计算两次一维…

二维傅里叶变换

fft2 函数将二维数据变换为频率空间。例如&#xff0c;可以变换二维光学掩膜以揭示其衍射模式。 二维傅里叶变换 以下公式定义 mn 矩阵 X 的离散傅里叶变换 Y。 和 是以下方程所定义的复单位根。 i 是虚数单位&#xff0c;p 和 j 是值范围从 0 到 m–1 的索引&#xff0c;q …