划重点:

在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_OBJECTpublic: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控件的值,会实现加法运算。

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

  1. 桌面会飞的鸟Qt C++小项目

    文章目录 桌面会飞的鸟Qt C++小项目 整体流程 具体代码展开 1.鸟图片的帧动画切换 2.鸟实现自动水平飞的功能 3 鼠标拖着鸟的操作 4.实现右键点击鸟类出现菜单栏 5.使界面透明化和无标题模式 ...

  2. Qt Quick Qml 之QML与C++ 混合编程学习

    <QML与C++ 混合编程学习> 1. 在 QML 中使用 C++ 类和对象 1) C++ 类的修改 2) 注册 QML 类型 3) 在 QML 中导入类型 4) 在 QML 创建由 C+ ...

  3. 十个小项目带你学会python编程,很简单,识字就行

    前言 Python不是一门很难的编程语言,但对于从未有过编程经验的人来说,学习它也需要讲究一定的技巧. 下面,用十个小项目,带你学会python编程. 项目1:自动添加标签项目2:绘制图表项目3:万能 ...

  4. QT学习系列:VS2015+QT环境配置后Lauch qt designer失败,无法打开*.ui文件

    第一步: 在[解决方案资源管理器]中,右击你的 xxx.ui文件,选择[打开方式],此时列表中默认值是[ Qt designer],选中它,点击[移除]按钮. 然后点[添加]按钮,在弹出的窗口中&qu ...

  5. (入门级小项目)JSP编程+web项目发布到Tomcat+mysql数据库

    项目名称:  学生评分系统 1. 笔记本电脑开wifi使用Tomcat9做服务器.(默认150个链接) 2. 在mysql数据库中录入两个班级的学生信息. 3. 登陆界面,对两个班级学生usernam ...

  6. 签到APP:android入门级小项目,Node.js 提供服务端接口。

    2019独角兽企业重金招聘Python工程师标准>>> ###一.项目描述   实验室小伙伴们通过APP连接实验室路由器,比对路由器Mac地址进行签到.此外小伙伴们还可通过APP进行 ...

  7. Qt实训项目----(1)

    Qt实训项目----(1) 1. 创建窗体工程mainwindow,并且在窗体绘画区域内加载并显示图片: 2. 在工具栏中添加绘图工具,点击后由默认图标变为"+"图标,并且能使用操 ...

  8. Qt Quick 3D介绍:Qt Quick的高级3D API

    目录 我们的目标是什么?为什么提出另一个3D解决方案? 统一图形技术 直观易用的API Qt Quick的统一工具 一流的素材优化管道 跨平台性能和兼容性 Qt Quick 3D到底是什么? 您能用Q ...

  9. linux python qt 安装目录,Linux 下QT调用Python库文件 以及Linux 安装Python3.8开发环境 问题...

    最近想运用linux系统下Qt来实现c++ 与python的混合编程,linux系统会自带python2.7版本或者python3.5版本(深度linux). Qt调用python文件需要在pro文件 ...

最新文章

  1. ensp删除静态路由命令_eNSP配置静态路由
  2. hashCode()方法的性能优化
  3. Linux终端程序用c语言实现改变输出的字的颜色
  4. 无法检查指定的位置是否位于cfs上_(干货分享)一文搞明白 节气门位置传感器的作用、故障类型与症状、诊断方法...
  5. 普通人改变命运最关键的这几种方法
  6. 命令行操作mysql
  7. 福布斯中国发布最杰出商界女性排行榜:董明珠再次夺冠
  8. 比较从 vSphere 5.x 到 vSphere 6.5 的各个版本
  9. php7 imagick扩展,php7安装imagick扩展
  10. 计算机交流会活动流程,新老生交流会活动方案
  11. 物联网是什么,和互联网之间主要有什么区别
  12. Flink的基础概念
  13. 20 行代码编写一个简单的端口扫描器
  14. 国标MPEG-PS实时流播放器开发(附例子)
  15. 2018春招总结(Java后端),干货满满
  16. 衣服不管染上什么,用这招都能洗掉!99%的人不知道!
  17. Pytorch 之torch.nn初探
  18. 常用手机尺寸以及分辨率
  19. 红米8A的root步骤(MIUI 11.0.10.0 稳定版 安卓9)
  20. JSP实现登录注册并链接数据库页面

热门文章

  1. css背景上能添加文字,如何利用div+css来给背景图片上文字布局
  2. 雨听 | 英语学习笔记(六)~作文范文:公务员考试的热潮
  3. Java的长整型Long/long后面的数字什么情况下必须加L?
  4. Java小试牛刀—数组
  5. frp 内网穿透 多系统 多模式(详细+多个应用)
  6. R语言垃圾邮件分类--朴素贝叶斯(机器学习)
  7. Tomcat调优总结
  8. Codecademy网学习Python第七天
  9. 猿创征文|浅谈区块链-区块链是什么?
  10. 如何在完全不懂服务器开发的情况下做一个实时联网对战的微信小游戏