文章目录

  • 前言
  • 一、准备工作
  • 二、开发步骤
    • 1.新建文件夹
    • 2.编辑add.ui文件
    • 2.具体实现
      • 2.1 编辑add.h文件
      • 2.2 编辑add.cpp文件
      • 2.3 关联槽函数
  • 总结

前言

最近的工作岗位需要使用C++与qt designer的编程环境进行项目的开发,现在和我一起开始进行第一个C++和qt designer的混合编程项目吧。


一、准备工作

进行开发前,你需要:
1.一台电脑
2.visual studio2008(我使用的是企业版,如果只是学习的小伙伴,可以选择其他版本)
3.qt designer

如果电脑上没有在visual studio上进行qt的配置的童鞋先配置好环境后再往下阅读。

项目的开发过程是在vs2008使用qt designer上设计的界面,然后使用c++设计程序逻辑


二、开发步骤

1.新建文件夹

1.打开vs2008
2.点击文件——>新建——>项目
3.如下图


点击finish后,就建好了第一个项目,文件夹的结构如下图:

其中需要我们进行编辑的文件有
1.add.ui qt designer进行界面设计的文件;
2.add.cpp 编写具体函数等;
3.addTool.h 申明界面类;


2.编辑add.ui文件

代码如下(示例):
双击add.ui文件后,打开如下图:

红色方框中的界面就是我们需要编辑的界面。

在qt designer的左边导航栏选择加入2个spin控件,5个Label和1个Text Browser。

改变spin控件中的值后,在Test Browser中会显示当前时刻两个加数的和。

如图,改变label控件大小的方法:

选中控件后,给控件命名,在右侧属性栏中,找到objectname,并把spin控件分别命名。第一个spin控件命名为add1,第二个spin控件命名为add2,Text Browser控件命名为result。如图:

设计好界面后,让我们看看最后的效果图:


2.具体实现

具体的实现,我们要解决把对控件的操作和代码关联起来。所以我们要解决两个问题: 1.当spin控件的值改变时,如何让TextBrowser中的值随之改变? 2.在类中如何使用控件的变量


2.1 编辑add.h文件

1.针对第一个问题,打开add.h文件,我们可以看到Ui::addClass ui;


所有的界面上的变量都可以理解为ui的成员变量,我们就能解决第一个问题了。

2.针对第二个问题,我们在add.h这个文件中添加构造函数和槽函数。

qt中有一个机制——信号槽,信号槽的大致意思是假设界面上点击某一个按钮后弹出对话框,这个点击的操作就是信号,“弹出对话框”的实现是通过槽来实现的,我们只需要在add.h中添加构造函数和槽函数。

add.h文件代码如下:

#ifndef ADD_H
#define ADD_H#pragma once#include <QtGui/QMainWindow>
#include "ui_add.h"class add : public QMainWindow
{Q_OBJECTpublic:add(QWidget *parent = 0, Qt::WFlags flags = 0);~add();private:Ui::addClass ui;private slots:void add1_valueChanged(int value);void add2_valueChanged(int value);
};#endif // ADD_H

2.2 编辑add.cpp文件

add.cpp文件代码如下:

#include "add.h"add::add(QWidget *parent, Qt::WFlags flags): QMainWindow(parent, flags)
{ui.setupUi(this);
}add::~add()
{}void add::add1_valueChanged(int value)
{ui.result->setText(QString::number(value +ui.add2->value()));
}void add::add2_valueChanged(int value)
{ui.result->setText(QString::number(value + ui.add1->value()));
}

2.3 关联槽函数

写好槽函数后,我们需要把控件和槽函数进行关联。如图:


先选中spin控件,再点击第二步方框红色方框的图标,接下来选中spin控件使用鼠标左键将控件下拉,点击编辑,增加槽函数add1_valueChanged(int)
add2_valueChanged(int)
对第一个spin控件添加add1_valueChanged(int)如图所示:

点击确定后,对第二个spin控件进行同样的操作,添加add2_valueChanged(int)。

关联好后如图所示:


现在可以开执行C++程序了,运行后的效果如图所示:

总结

我也是看了网上一些大佬的代码,自己复现出来的,并且在这期间出现了很多错误(呜呜呜)。。。如果大家在实现过程中出现什么问题了,欢迎一起讨论!

C++和qt designer的混合编程--动态计算加法小工具相关推荐

  1. Qt与Matlab混合编程细节总结

    最近准备做一个项目,其中要用到很复杂的拟合算法等,自己去实现这些算法要很久,而手边有师兄已经写好的Matlab函数,如果可以实现利用Qt调用这些函数,那么工作量将会减少很多.而且这个看上去也很简单,至 ...

  2. qt matlab环境配置文件,Qt与matlab混合编程

    由于项目需要,需要调用现有的matlab程序,考虑将matlab程序生成动态链接库,再在Qt下动态调用.在这个过程中,遇到了许多问题,写个文章mark一下. 1.环境准备 我的电脑是win10,也先装 ...

  3. QT与MATLAB混合编程

    QT与MATLAB混合编程 本文就介绍使用 Qt 和 Matlab 进行混合编程的基本流程,主要包括: 如何在Matlab中将m文件编译为C++语言的DLL文件 如何在Qt项目中加入自定义DLL相关的 ...

  4. pyqt5 Qt Designer + PyqtGraph画图显示动态曲线

    PyQt5 Qt Designer 使用PyqtGraph画图显示动态曲线 源码示例下载 传送门 效果图: 导入pyqt5库: pip install PyQt5==5.15.4 -i https:/ ...

  5. halcon linux qt,Halcon C++混合编程学习之Qt 实现检测焊接点

    Halcon C++混合编程学习之Qt 实现检测焊接点 # include "HalconCpp.h" # include "HDevThread.h" # i ...

  6. Qt和海康威视混合编程

    Qt 打开海康威视工业相机 在将缓存数据转为QImage格式之后,点击采集,在lable中显示一片绿色,怎么回事? int myCamer::ReadBuffer() { unsigned int n ...

  7. 学习笔记:Qt与Matlab混合编程及遇到的诸多问题(附DEMO)

    工具:MATLAB R2014b,Qt 5.6.1, 目标:通过MATLAB写一个简单的函数,生成动态链接库DLL,再在Qt上调用 1.在MATLAB主页新建一个函数 记住函数的名字和保存的函数文件的 ...

  8. python利器怎么编程-Python实现翻译小工具!几行代码搞定!装逼利器有没有!

    一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面 二.代码 进群:548377875    即可 ...

  9. python编程工时计算_Python小项目——工时计算

    项目二:工作量计算器 要求 要求 分析过程 已知信息:标准的项目,需要1个人用80工时完成(1个人做10天) 计算方式1:工时计算 输入:项目大小(浮点型,代表标准大小的倍数).人数(整数) 输出:工 ...

最新文章

  1. Squid代理服务器基本配置(三)
  2. Linux C编程--进程间通信(IPC)2--信号处理函数
  3. 跳转到保护模式并显示一个LOGO
  4. 基于Boost::beast模块的小型http服务器
  5. SQL SERVER 执行计划各字段注释
  6. linux 中 ~/.和$
  7. rsync error: some files/attrs were not transferred
  8. AUTOSAR专业知识篇(八)-ID.3 和大众的电气化平台
  9. _UICreateCGImageFromIOSurface 使用API
  10. 前端学习(2433):创建页面组件
  11. updating homebrew...一直在等 brew install xxx卡在Updating Homebrew
  12. mysql自定义多选排序,mysql 使用order by field() 自定义排序
  13. 16进制String和int互转
  14. android开发学习---开发一个简易的短信发送器
  15. 2017中国屏幕分辨率统计
  16. coreseek mysql.sock_coreseek+lnmp实现站内全文检索
  17. Windows Server2012默认的80端口被System进程占用解决办法
  18. python修改游戏数据_python1.2-----pywin32模块/语音合成,窗口闪烁以及修改游戏数据的技巧...
  19. android课程设计健身,健身软件课程设计_毕业论文设计.doc
  20. ABD-Net: AttentivebutDiversePersonRe-Identification论文阅读

热门文章

  1. 概率论考点总结类型11 联合分布函数和边缘分布函数
  2. Data Augmentation techniques in time series domain: A survey and taxonomy
  3. 基于IP播放TS流的码率控制策略
  4. Mac 常用键盘快捷键
  5. Java毕设项目滁州市住房公积金管理中心网站计算机(附源码+系统+数据库+LW)
  6. 微信公众号被冻结怎么恢复
  7. win10任务栏日期突然消失
  8. PhotoShop学习笔记(一):PhotoShop获得商品背景为透明图的图片
  9. 表格转换为LaTex格式
  10. 头条号如何提高文章的阅读量,头条号提高阅读量的好方法