QT入门级小项目(vs2015+qt designer混合编程)

2023-11-17

      划重点:

           在vs里面使用c++和qt designer开发一个动态计算加法的小工具。

   最近想做一个界面,而且QT也是自己一直想学的东西,于是就查了一下python+qt和c++与Qt开发的方法。这篇文章就是使用c++开发QT界面。网上关于QT的开发文章眼花缭乱,因为可以在qt creater里面使用c++或者qt designer设计界面,也可以在vs里面使用c++或者qt designer设计几面,花了不少时间弄清楚c++与QT的关系。所以写下此篇博文,方便使用c++开发QT界面的童鞋入门。

       Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。你可以通过在QT 的creater软件中使用c++语言进行界面和逻辑的编写,也可以在VS里面进行QT界面的开发,这里我介绍的是后者。在一个工程里面,加入界面设计。Anyway,QT就是一个C++框架,所以C++的规则都可以在这里实现,你所看到的不同于C++的东西也是通过C++编写,封装在框架里面的。当然我们也可以在vs里面使用c++语言直接写界面,但是我觉得qt designer对控件进行布局,省下了很多代码。下面是c++结合qt designer的代码设计过程。

在进行开发前,你需要确保安装了开发环境:

1、安装好QT

https://www.qt.io/download这是QT的官网,选择go open source去下载安装就行。


2、安装好VS

3、在VS里面配置好QT.(可以参考https://blog.csdn.net/u014265347/article/details/54972611)

(本工程用的开发环境是vs2015+qt5.10.1)

       这篇博客的项目是QT官网教程上的一个使用qt designer设计界面的程序,我们将在VS2015里面使用qt designer设计界面,然后使用c++设计逻辑。

首先打开VS2015,建立工程文件addTool,然后一直点击“next”直到“finish”。


 束





工程创建成功后,在vs2015的界面里面,显示创建了一下几个文件:


    其中,我们会对其进行编辑的文件有:

addTool.ui     qt designer进行界面设计的文件;

addTool.cpp   编写具体槽函数等;

addTool.h     对界面类进行申明;

下图是加法器的界面,需要用到两个spin控件、1个5个Label和1个Text Browser。当我们改变spin控件的数值时,在Text Browser会显示当前时刻两个加数的和。


 

首先双击addTool.ui ,我们可以通过Widget Box查找这些控件。

                                    


      因为在代码中用到输入、输出控件变量,所以我们在拖出控件后,按下面的方法修改控件的名字:

选中控件,在右侧的属性栏里面,找到objectName,把名字由spinBox给成add1。

 的

 修改后:


使用同样的方法,把输入的两个spin控件变量名分别为add1、add2,输出的控件Text Browser变量名为result。

现在回到我们的编程。现在我们要解决的问题,就是把对控件的操作跟我们的代码关联起来。这里我们主要解决两个问题:

1、控件的值改变时,怎样实现更新加法值并显示到TextBrowser上?

2、控件的变量怎样映射的类中? 

        首先,打开.h文件,我们可以看到Ui::addToolClass ui


所有界面的变量,可以理解为ui的成员变量。这样第一个问题就解决了。

要想解决第二个问题,我们要理解qt里面的一个机制—“信号槽”。简单的说,假如界面有一个按钮,点击就会弹出对话框,那么”点击”这个动作就是信号,“弹出对话框”的实现就是通过槽做到的。如果我们不通过qt designer来设计界面,只使用c++语言来写界面的话,就需要用到connect函数,但是我们使用qt desgner来设计界面就不需要了,只需要在slots添加函数,下面是程序。

addTool.h,在这个文件里面,添加构造函数和槽函数。

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_addTool.h"

class addTool : public QMainWindow
{
	Q_OBJECT

public:
	addTool(QWidget *parent = Q_NULLPTR);
	~addTool();

private:
	Ui::addToolClass ui;

	private slots:
	void add1_valueChanged(int value);
	void add2_valueChanged(int value);
};

addTool.cpp

#include "addTool.h"

addTool::addTool(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
}


addTool::~addTool()
{

}

void addTool::add1_valueChanged(int value)
{
	ui.result->setText(QString::number(value + ui.add2->value()));
}

void addTool::add2_valueChanged(int value)
{
	ui.result->setText(QString::number(value + ui.add1->value()));
}

槽函数写好后,我们接下来需要把控件关联槽函数。我们双击addTool.ui 文件,先选中spin控件,点击框中的那个按钮(关联槽函数的按钮)


然后左击控件spin,往下拖一段距离,再松开手,就会弹出控件关联槽函数的对话框。


选择valueChanged(int),在右侧通过编辑,把我们写的slot函数添加进来。


添加完毕后,选择add1_valueChange(int)


按照同样的方法,给spin2选择槽函数add2_valueChange(int)


然后保存.ui文件,按ctrl+f5编译运行工程文件,就可以看到我们的加法工具了,随意改变spin控件的值,会实现加法运算。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT入门级小项目(vs2015+qt designer混合编程) 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 按成员序列化

    我已经实现了template
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • Ubuntu常用环境配置

    配置软件源 切换清华源 sudo sed i s http archive ubuntu com https mirrors tuna tsinghua edu cn g etc apt sources list sudo sed i s
  • react教程-井字棋案例扩展03

    使用两个循环来渲染出棋盘的格子 而不是在代码里写死 hardcode 这个关键点是在于循环 react的循环是和vue不一样的 veu中的循环是直接写在节点上 但是react的循环 是通过数组遍历的方法 先遍历出虚拟的Dom节点 然后通过r
  • Active Directory的基本认识

    参考文献 http edu yesky com edupxpt 379 2086379 shtml http en wikipedia org wiki Active Directory Active Directory 和我们熟悉的网络邻
  • 通讯编程002——使用Arduino ModbusTCP 控制照明

    本文介绍如何使用Arduino作为Modbus TCP从站 PC机为Modbus主站 安装ModScan用于主站调试 通过ModScan控制LED开关照明 相关软件可登录网信智汇 wangxinzhihui 下载 1 运行Arduino I
  • 一份关于jvm内存调优及原理的学习笔记

    JVM 一 虚拟机的基本结构 1 jvm整体架构 类加载子系统 负责从文件系统或者网络中加载class信息 存入方法区中 方法区 Perm 存放加载后的class信息 包括静态方法 jdk1 6以前包含了常量池 参数 XX PermSize
  • Android获取SHA1

    SHA1 怎么获取 不同签名文件的 SHA1 值不同 可以参考下面三种获取 SHA1 值的方式 1 通过 Android Studio 编译器获取 1 打开 Android Studio 的 Terminal 工具 2 输入命令 keyto
  • html从一个页面跳转至另一个html页面的子页面

    假设从1 html跳转至2 html的子页面 则 在1 html中添加点击事件 a href user customerManageNew class u btn add span class swf add span a 然后在后台con
  • Android中 @id 与 @+id 区别

    Android 中的组件需要用一个int 类型的值来表示 这个值也就是组件标签中的id 属性值 id 属性只能接受资源类型的值 也就是必须以 开头的值 例如 id abc id xyz等 如果在 后面使用 表示当修改完某个布局文件并保存后
  • shell脚本中的几个括号总结(小括号/大括号/花括号)

    转自 http www cnblogs com hanyan225 archive 2011 10 06 2199652 html Shell的强大是毋庸置疑的 方便了我们也迷惑了我们 比如这些杂七杂八的括号 一向自认聪明的我也傻傻分不清了
  • uni-app request回调函数内无法使用this.

    微信小程序开发中 通常会在 request成功的回调函数中修改本地的属性 如果直接使用this 会有类似的提示无法修改 gt Cannot set property xxx of undefined at api request succe
  • 【代码随想录】双指针法刷题

    双指针法刷题 移除元素 删除有序数组中的重复项 移动零 比较含退格的字符串 有序数组的平方 反转字符串 替换空格 反转链表 递归 迭代 头插法 删除链表的倒数第 N 个节点 环形链表 快慢指针 环形链表 II 链表相交 三数之和 四数之和
  • no matching distrubution found for setuptools

    1 问题描述 1 安装setuptools rust 报错 no matching distrubution found for setuptools 实际上已经安装过好几次 2 执行命令之后 python3 7 m pip show Se
  • 数据库日期处理(转)

    通常 你需要获得当前日期和计算一些其他的日期 例如 你的程序可能需要判断一个月的第一天或者最后一天 你们大部分人大概都知道怎样把日期进行分割 年 月 日等 然后仅仅用分割出来的年 月 日等放在几个函数中计算出自己所需要的日期 在这篇文章里
  • jupyter运行环境安装与使用

    jupyter运行环境安装与使用 所有文章不设限 我们相遇偶然 相散坦然 互不打扰 各自安好 向阳而生 一 利用python环境 使用pip命令安装 1 安装jupyter的方式 此处省去对于python环境的相关配置 直接介绍如何安装 j
  • 【计算机网络11】应用层之DHCP

    文章目录 1 IP地址的分配 2 DHCP 2 1 DHCP 分配 IP 地址的 4 个阶段 1 IP地址的分配 IP地址按照分配方式 可以分为 静态 IP 地址 动态 IP 地址 静态 IP 地址 手动设置 适用场景 不怎么挪动的台式机
  • 分享全球外贸免费发布产品的平台-跨境贸易平台

    免费发布产品到平台有哪些好处 发布产品增加一些曝光率 提高你产品在谷歌搜索结果的曝光率 为你的官网引流 提高权重 http www ecrobot com 综合 世界综合贸易网站精选前十名 http www ectrade com 亚洲 易
  • ElasticsearchTemplate 常用API使用,看这一篇就够了

    ElasticsearchTemplate 常用API 文章目录 ElasticsearchTemplate 常用API 前言 源码分析 基本使用 单字符串全文查询 指定字段模糊查询 指定字段短语匹配 完全匹配查询 多字段匹配某一个值 完全
  • mysql忘记密码重置密码步骤

    1 使用管理员权限打开cmd窗口 win r后输入cmd 然后按Ctrl Shift Enter 2 停止mysql服务 如上图net stop mysql 3 找到mysql安装目录下的my ini文件 使用管理员权限打开 4 在 mys
  • 内存溢出的原因和解决办法

    1 堆溢出 这种场景最为常见 报错信息 java lang OutOfMemoryError Java heap space 原因 1 代码中可能存在大对象分配 2 可能存在内存泄露 导致在多次GC之后 还是无法找到一块足够大的内存容纳当前
  • QT入门级小项目(vs2015+qt designer混合编程)

    划重点 在vs里面使用c 和qt designer开发一个动态计算加法的小工具 最近想做一个界面 而且QT也是自己一直想学的东西 于是就查了一下python qt和c 与Qt开发的方法 这篇文章就是使用c 开发QT界面 网上关于QT的开发文