qt开发界面程序快速入门总结
前言
要使用qt设计一款上位机,从保存的数据文件中显示时域、频域图。
QT基本概念及其下载
我参考了C语言中文网。里边有比较全面的QT基本概念以及下载教程。对于版本的选择,用于公司开发的话,比较稳定的5.9和5.12都是可以的。至于长期支持,是指在qt软件出现bug后可以向其报告错误,qt会为你解决这一bug。对于小程序和入门人员来说,并不会涉及到qt都解决不了的bug,所以直接选择稳定版本即可。
QT控件提升
qt本身的控件也就那么几种,例如按钮、文本框之类的。
如果想要比较好的效果,就需要使用控件的提升。这个在MFC中也很常见,基于qt的一个基本控件作为父类,写一个子类用于更高级的操作和显示。
例如在这个项目中,我需要一个显示界面,需要使用基于基础的widget类的的QCustomplot类,具体提升方法有很多文章。demo简单来说便是将.cpp和.h文件加到自己的工程中,同时在.pro工程文件中增加相应支持(这一步很关键)。例如:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
可视化编程
demo中已经详细记录了如何新建一个qt工程,利用.ui文件进行可视化编程,这里不再赘述。
记录遇到的一些问题。
布局技巧
在排版的时候,可以利用先将想要的控件都拖过来,再选中需要排列的控件(ctrl + 左键单击多选),右键进行布局。
当然也可以使用快捷键加速布局。
layout中的控件大小不好调
比如我在布局好的控件中加一个spacer。
这个spacer会随着整个layout(最大的红框)的大小调整而自适应调整,但是如果不希望改变layout的大小的同时改变spacer的大小,需要修改其属性,将其大小改为固定,即可修改其长宽进行自定义大小,同时其他控件会进行自适应调整。
槽函数机制
界面应用程序开发的共同点是,通过点击相应按钮,可以产生相应的信号并插入待处理队列。当执行到某一信号时,会执行对应的函数。在qt中,需要将这些通过处理信号调用的函数定义为槽函数。
例如添加一个定时器并绑定槽函数。
QTimer* timer;
timer = new QTimer();
timer->setInterval(1000);
connect(timer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
在函数声明时,应该这样:
private slots:void onTimeOut();
某则,在timeout()信号发出时,系统将找不到onTimeOut()函数,即使你声明并实现了这一函数。
对于其他按钮点击消息,直接在相应控件上右击并转到槽便可以快速创建槽函数。
另外,槽函数声明之后必须实现,某则会报错。例如我不小心新建了pushButton的click()信号对应的槽函数,之后按ctrl + z撤销了函数的实现。然而并没有自动为我撤销.h文件中对槽函数的声明,这样会报错。
从任意位置读取二进制文件
这一项目是从二进制文件中读取数据并进行回放,文件可能是GB甚至TB级别,不可能全部加载进内存。采用QFile+QDataStream实现。QFile负责加载并创建文件对象,QDataStream负责流式读取二进制数据。
// RecvPrintf_Slots是负责log信息显示的函数
/****************/
// 加载文件
QFile dataFile; // 二进制数据文件
QString filename = QFileDialog::getOpenFileName(this,tr("选择二进制数据文件"),".",tr("文件格式(*.dat)"));
dataFile.setFileName(filename);
if(!dataFile.open(QIODevice::ReadOnly))
{RecvPrintf_Slots("加载文件失败!");return;
}else{RecvPrintf_Slots("文件加载成功!\n");QString str = "当前数据文件为: " + filename + "\n";RecvPrintf_Slots(str);
}
/*******************/
// 读取数据
dataFile.seek(plotStart); // plotStart为qint64类型,设置读取位置,单位为B
QVector<qint16> port_y;
QDataStream aStream(&dataFile); //用文本流读取文件
for(int i = 0; i < 1024; i++){qint16 tmp;// 每次读16bitaStream.readRawData((char*)(&tmp), sizeof(qint16));port_y.append(tmp);
}
/*******************/
qt开发界面程序快速入门总结相关推荐
- 树莓派python界面qt_树莓派QT入门教程——使用Qt开发界面程序控制GPIO
树莓派QT入门教程--使用Qt开发界面程序控制GPIO 玩转树莓派2017-07-12 12:36 树莓派入门教程--使用Qt开发界面程序 前言 Qt是一个1991年由奇趣科技开发的跨平台C++图形用 ...
- 视频教程-微信小程序快速入门视频课程-微信开发
微信小程序快速入门视频课程 北京八维研修学院技术工程师,5年大型项目实战开发经验,3年授课经验. 孟宪杰 ¥168.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 AP ...
- 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )
文章目录 一.添加按钮控件 二.修改按钮文本 三.为按钮添加点击事件 ( 弹出对话框 ) 四.为按钮添加点击事件 ( 打开记事本 ) 五.为按钮添加点击事件 ( 打开计算器 ) 六.去掉系统调用时弹出 ...
- 游戏开发的HelloWorld,快速入门,新手上路,使用CocosCreator+JS,flyBird(飞翔小鸟)
游戏开发的HelloWorld,快速入门,新手上路,使用CocosCreator+JS,flyBird(飞翔小鸟) 介绍 开发环境 游戏原理 文件结构 详细操作 全部代码 介绍 拓展什么的都没有,真正 ...
- 微信小程序快速入门+四个实战小程序(一)——入门准备
一)系列达成目标介绍 二)小程序创建的准备 1)注册开发者账号 2)下载编译器 ------------------------------------------------------ 一)系列达 ...
- qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...
本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开W ...
- Qt 开发ARM64程序
Qt 开发ARM64程序 flyfish 编译 CMakelists.txt cmake_minimum_required(VERSION 3.14)project(untitled LANGUAGE ...
- DirectShow应用程序快速入门
作者:suntaoznz 转自:http://blog.csdn.net/suntaoznz/article/details/600493 目录(?)[+] DirectShow应用程序快速入门 摘要 ...
- 微信小程序快速入门【一】
微信小程序快速入门[一] 文章目录 微信小程序快速入门[一]
最新文章
- java 魔法王国,游历魔法王国
- 推荐系统中基于深度学习的混合协同过滤模型
- 使用websploit在局域网全自动渗透
- 服务器系统磁盘,服务器系统重装与磁盘阵列
- Linux sed命令使用
- 前端开发工程师——网易云课堂
- SSM中怎样使用JUnit4+spring-test编写单元测试
- bzoj2753: [SCOI2012]滑雪与时间胶囊
- RNA-Seq分析软件HTSeq的安装
- oracle ora 08103,ORA-08103: 对象不再存在
- 【转】Go Micro(2)——微服务工具箱
- Python智能对话机器人实现
- vue中删除表格中的一行记录后,如何让表格更新(性能优化)
- MySQL Mac 终端环境变量配置
- 江山三侠—Flash短片轻松学(第2季)
- 9个优秀的标签云免费生成工具
- linux系统触摸板双击,在Ubuntu 18.04系统中搞定触摸板多点触控
- 高考数学解题技巧:基本不等式求最值神奇方法-神奇设k法
- TransDecoder识别转录本中编码区并预测蛋白
- CAD控件 出三维控件!和手机CAD控件了,欢迎大家使用!