Qt学习2
跟学视频
1.菜单栏和工具栏
//菜单栏最多只能有一个//菜单栏创建QMenuBar * bar = menuBar();//将菜单栏放到窗口中setMenuBar(bar);//创建菜单QMenu * fileMenu = bar->addMenu("开始");QMenu * editMenu = bar->addMenu("编辑");//创建菜单项QAction * newAction = fileMenu->addAction("新建");//添加分隔符fileMenu->addSeparator();QAction * openAction = fileMenu->addAction("打开");//工具栏 可以有多个QToolBar * toolBar = new QToolBar(this);addToolBar(Qt::LeftToolBarArea,toolBar);//默认停靠在左边//后期设置 只允许 左右停靠toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//设置浮动toolBar->setFloatable(false);//设置移动(总开关)toolBar->setMovable(false);//工具栏可以设置内容toolBar->addAction(newAction);//添加分隔符toolBar->addSeparator();toolBar->addAction(openAction);//工具栏中添加控件QPushButton * btn = new QPushButton("aa",this);toolBar->addWidget(btn);
2.状态栏、铆接部件、核心部件
//状态栏 最多有一个QStatusBar * stBar = statusBar();setStatusBar(stBar);//放标签控件QLabel * label = new QLabel("提示信息",this);stBar->addWidget(label);QLabel * label2 = new QLabel("右侧提示信息",this);stBar->addPermanentWidget(label2);//铆接部件 (浮动窗口) 可以有多个QDockWidget * dockWidget = new QDockWidget("浮动",this);addDockWidget(Qt::BottomDockWidgetArea,dockWidget);//设置后期停靠区域dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);//设置中间部件 只能一个QTextEdit * edit = new QTextEdit(this);setCentralWidget(edit);
3.添加资源文件
1.项目文件名右击,添加新文件,Qt->Qt resouce file,文件名 res
2.先要把添加的资源放到建立的项目文件下,添加前缀“/”,添加文件,添加文件后,点左下角构建
//使用Qt添加资源 ":+ 前缀名 + 文件名"ui->actionnew->setIcon(QIcon(":/Image/Luffy.png"));ui->actionopen->setIcon(QIcon(":/Image/LuffyQ.png"));
4.模态和非模态对话框
//对话框 分类//模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)//模态创建 阻塞QDialog dlg(this);dlg.exec();//此时执行到此会弹出一个窗口,关闭窗口后,才会执行下边的代码(拥有阻塞功能)qDebug() << "模态对话框弹出了";//非模态对话框// QDialog dlg2(this);// dlg2.show();//show函数是在lambda函数中,当执行完该函数,show程序会释放掉,所以会出现窗口一闪而过的现象QDialog * dlg2 = new QDialog(this);//存放堆区dlg2->resize(200,100);dlg2->show();dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号 属性qDebug() << "非模态对话框弹出了";
5.消息对话框
静态成员函数(static public func)
//消息对话框//错误对话框QMessageBox::critical(this,"critical","错误");//信息对话框QMessageBox::information(this,"info","信息");//提问对话框//参数1 父亲 参数2 标题 参数3 提示内容 参数4 按键类型 参数5 默认关联回车按键if( QMessageBox::Save == QMessageBox::question(this,"ques","错误",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)){qDebug() << "选择的是保存";}else{qDebug() << "选择的是取消";}//警告对话框QMessageBox::warning(this,"warning","警告");
6.其他对话框
//其他标准对话框//颜色对话框QColor color = QColorDialog::getColor(QColor(255,0,0));qDebug() << " r = " << color.red() << " g = " << color.green() << " b = " << color.blue();//文件对话框 参数1 父亲 参数2 标题 参数3 默认打开路径 参数4 过滤文件格式//返回值是 文件打开地址QString str = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\16385\\Desktop","*.txt");qDebug() << str;//字体对话框bool flag;QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));qDebug() << "字体:" << font.family().toUtf8().data() << "字号:" << font.pointSize() << "是否加粗: " <<font.bold() << "是否倾斜: "<<font.italic();
7.控件
按钮组
- QPushButton 常用按钮
- QToolButton 工具按钮 用于显示图片,如图想显示文字,修改风格:toolButtonStyle , 凸起风格autoRaise
- radioButton 单选按钮,设置默认 ui->rBtnMan->setChecked(true);
- checkbox多选按钮,监听状态,2 选中 1 半选(QcheckBox下的tristate) 0 未选中
//设置单选按钮 男默认选中 rBtnMan是按钮的重命名ui->rBtnMan->setChecked(true);//选中女后 打印信息connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){qDebug() << "选中了女了";});//多选按钮 2是选中 0是未选中connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){qDebug() << state;});
QListWidget 列表容器
//利用ListWidget写诗QListWidgetItem * item = new QListWidgetItem("锄禾日当午");//将这一行放到listwidget中ui->listWidget->addItem(item);item->setTextAlignment(Qt::AlignHCenter);//水平居中对齐//利用addItems一次性添加整个诗内容QStringList list;list << "锄禾日当午" << "汗滴禾下土" << "谁知盘中餐" << "粒粒皆辛苦";ui->listWidget->addItems(list);
QTreeWidget 树控件
//设置水平头ui->treeWidget->setHeaderLabels(QStringList () << "英雄" << "英雄介绍");QTreeWidgetItem * LiItem = new QTreeWidgetItem(QStringList() << "力量");QTreeWidgetItem * MinItem = new QTreeWidgetItem(QStringList() << "敏捷");QTreeWidgetItem * ZhiItem = new QTreeWidgetItem(QStringList() << "智力");//加载顶层的节点ui->treeWidget->addTopLevelItem(LiItem);ui->treeWidget->addTopLevelItem(MinItem);ui->treeWidget->addTopLevelItem(ZhiItem);//追加子节点QStringList heroL1,heroL2,heroM1,heroM2,heroZ1,heroZ2;heroL1 << "刚被猪" << "前排坦克,能在吸收伤害的同时造成可观的范围输出";heroL2 << "船长" << "前排坦克,能肉能输出能控场的全能英雄";heroM1 << "月骑" << "中排物理输出,可以使用分裂利刃攻击多个目标";heroM2 << "小鱼人" << "前排战士,擅长偷取敌人的属性来增强自身战力";heroZ1 << "死灵法师" << "前排法师坦克,魔法抗性较高,拥有治疗技能";heroZ2 << "巫医" << "后排辅助法师,可以使用奇特的巫术诅咒敌人与治疗队友";QTreeWidgetItem *l1 = new QTreeWidgetItem(heroL1);QTreeWidgetItem *l2 = new QTreeWidgetItem(heroL2);QTreeWidgetItem *m1 = new QTreeWidgetItem(heroM1);QTreeWidgetItem *m2 = new QTreeWidgetItem(heroM2);QTreeWidgetItem *z1 = new QTreeWidgetItem(heroZ1);QTreeWidgetItem *z2 = new QTreeWidgetItem(heroZ2);LiItem->addChild(l1);LiItem->addChild(l2);MinItem->addChild(m1);MinItem->addChild(m2);ZhiItem->addChild(z1);ZhiItem->addChild(z2);
QTableWidget控件
//TableWidget控件//设置列数ui->tableWidget->setColumnCount(3);//设置水平表头ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");//设置行数ui->tableWidget->setRowCount(5);//设置正文QStringList nameList;nameList <<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";QStringList sexList;sexList<<"男"<<"男"<<"男"<<"男"<<"女";for(int i=0;i<5;i++){int col=0;ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));//int 转 Qstringui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(18+i)));}
-
- 其他控件介绍
- stackedWidget 栈控件
- ui->stackedWidget->setCurrentIndex(1);
- 下拉框
- ui->comboBox->addItem("奔驰");
- QLabel 显示图片
- ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"))
- QLabel显示动图 gif图片
- ui->lbl_movie->setMovie(movie);
- movie->start();
- stackedWidget 栈控件
- 其他控件介绍
//设置默认定位scrollAreaui->stackedWidget->setCurrentIndex(0);//scrollArea按钮connect(ui->ScrollArea,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(1);});//TabWidget按钮connect(ui->TabWidget,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(0);});//ToolBox按钮connect(ui->ToolBox,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(2);});//利用QLabel显示图片ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));//利用QLabel显示gif动图QMovie * movie = new QMovie(":/Image/mario.gif");ui->lbl_movie->setMovie(movie);movie->start();//开始播放
相关文章:
Qt学习2
跟学视频 1.菜单栏和工具栏 //菜单栏最多只能有一个//菜单栏创建QMenuBar * bar menuBar();//将菜单栏放到窗口中setMenuBar(bar);//创建菜单QMenu * fileMenu bar->addMenu("开始");QMenu * editMenu bar->addMenu("编辑");//创建菜单项QAction…...

C++ 内存泄漏检测器设计
文章目录 1. C中的动态内存分配2. 什么是内存泄漏3. 内存泄漏的代码案例4. 内存泄漏检查器的设计模块1:位置信息捕获:模块2:内存分配跟踪:模块3:内存释放跟踪:模块4:泄漏记录存储:模…...
在 Linux 上安装 Nmap 工具
📦 在 Linux 上安装 Nmap 工具指南 Nmap(Network Mapper)是功能强大的网络扫描工具,以下是各种 Linux 发行版的安装方法: 🧩 通用安装方法 1. 使用包管理器安装(推荐) # Debian/…...
从零打造AI面试系统全栈开发
🤖 AI面试系统开发完整教程 📋 项目概述 本教程将带你从零开始构建一个完整的AI面试系统,包含前端、后端、AI集成和部署的全流程。 源码地址 技术栈 前端: React TypeScript Vite Vaadin Components后端: Spring Boot Spring Securi…...

破局与进阶:ueBIM 在国产 BIM 赛道的差距认知与创新实践
作为国产BIM领域的探索者,斯维尔ueBIM自诞生以来始终以追赶国际头部技术为目标,但不可否认的是,在核心功能覆盖、行业生态成熟度以及全球市场占有率等方面,我们与Autodesk Revit、Bentley Systems等国际巨头仍存在显著差距。这种差…...

分布式流处理与消息传递——向量时钟 (Vector Clocks) 算法详解
Java 实现向量时钟 (Vector Clocks) 算法详解 一、向量时钟核心原理 #mermaid-svg-JcZ1GT0r1ZNSy6W7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JcZ1GT0r1ZNSy6W7 .error-icon{fill:#552222;}#mermaid-svg-JcZ…...

20250603在荣品的PRO-RK3566开发板的Android13下的命令行查看RK3566的温度
20250603在荣品的PRO-RK3566开发板的Android13下的命令行查看RK3566的温度 2025/6/3 11:58 RK3566的cpu运行效率 top rk3566_t:/ # rk3566_t:/ # rk3566_t:/ # cd /sys/class/thermal/ rk3566_t:/sys/class/thermal # ls -l rk3566_t:/sys/class/thermal # cd thermal_zone0/ r…...

帝可得 - 设备管理
一. 需求说明 设备管理主要涉及到三个功能模块,业务流程如下: 新增设备类型: 允许管理员定义新的售货机型号,包括其规格和容量。 新增设备: 在新的设备类型定义后,系统应允许添加新的售货机实例,并将它们分配到特定的…...
FTXUI配置
对于 FTXUI 的安装与配置, 官方已经给出了三种方案. 第一种: 使用 FetchContent 远程拉取第二种: 在你本地安装 FTXUI 库, 然后通过 find_package 使用第三种: 使用 Git 子模块 FetchContent 无需手动下载安装 FTXUI, 通过 CMake 自动从 GitHub 拉取并编译依赖 include(Fet…...
Caliper压力测试
目前FISCO BCOS适配的Caliper版本为0.2.0,请在部署Caliper运行环境时确保Caliper的版本为0.2.0,如在部署或使用过程中遇到任何问题,请优先参考 https://github.com/FISCO-BCOS/FISCO-BCOS/issues/1248 中的解决方案进行排查。 1. 环境要求 …...

【iOS安全】使用LLDB调试iOS App | LLDB基本架构 | LLDB安装和配置
LLDB基本架构 参考: https://crifan.github.io/ios_re_dynamic_debug/website/debug_code/lldb_debugserver.html https://book.crifan.org/books/ios_re_debug_debugserver_lldb/website/ LLDB安装和配置 1. 让iPhone中出现/Developer/usr/bin/debugserver 最初…...
一、核心概念深入解析
一、核心概念深入解析 1. shared_ptr 的线程安全性澄清 引用计数是原子操作:shared_ptr 的引用计数(use_count)在多线程中递增 / 递减是安全的(原子操作),但对象本身的读写需额外同步(如 std:…...
python直方图
在Python中,绘制直方图(Histogram)是一项非常常见的任务,通常用于数据可视化,以展示数据的分布情况。Python中有多种库可以绘制直方图,其中最常用的两个库是Matplotlib和Seaborn。此外,Pandas库…...
[特殊字符] Unity 性能优化终极指南 — Text / TextMeshPro 组件篇
UGUI Text组件的不当使用及其性能瓶颈与优化 在Unity UGUI系统中,Text 组件(或其升级版 TextMeshPro)是显示文本信息的核心元素。然而,如果不当使用,它极易成为UI性能瓶颈的罪魁祸首,尤其是在预制体、属性…...

Idea 配置 Maven 环境
下载 Maven 官网:https://maven.apache.org/index.html 点击左侧 Downloads,然后选择 Files 中的 zip 包下载(下载慢可以使用迅雷) 配置 Maven 将压缩包解压,比如我解压后放到了 D:\developer\environment\apache-…...
git clone报错:SSL certificate problem: unable to get local issuer certificate
上述报错的完整信息是: Cloning into test... fatal: unable to access https://github.com/xxxx/xxxx.git/: SSL certificate problem: unable to get local issuer certificate 该报错表示 Git 在使用 HTTPS 协议克隆仓库时,无法验证 GitHub 的 SSL …...

Kafka 如何保证不重复消费
在消息队列的使用场景中,避免消息重复消费是保障数据准确性和业务逻辑正确性的关键。对于 Kafka 而言,保证不重复消费并非单一机制就能实现,而是需要从生产者、消费者以及业务层等多个维度协同配合。接下来,我们将结合图文详细解析…...
SpringBoot整合MyBatis完整实践指南
在Java企业级应用开发中,SpringBoot和MyBatis的组合已经成为主流的技术选型方案之一。本文将详细介绍如何从零开始搭建一个基于SpringBoot和MyBatis的项目,包括环境配置、数据库设计、实体类创建、Mapper接口编写以及实际应用等完整流程。 一、环境准备…...

RNN结构扩展与改进:从简单循环网络到时间间隔网络的技术演进
本文系统介绍 RNN 结构的常见扩展与改进方案。涵盖 简单循环神经网络(SRN)、双向循环神经网络(BRNN)、深度循环神经网络(Deep RNN) 等多种变体,解析其核心架构、技术特点及应用场景,…...
docker中,容器时间和宿机主机时间不一致问题
win11下的docker中有个mysql。今天发现插入数据的时间不正确。后来发现原来是docker容器中的时间不正确。于是尝试了各种修改,什么run -e TZ"${tzutil /g}",TZ"Asia/Shanghai",还有初始化时带--mysqld一类的,…...
Unity Shader编程】之高级纹理
一,立方体纹理 Cubemap 用途 用途说明反射贴图表面镜面高光或金属反射环境光采样模拟环境对物体的影响天空盒背景使用六张图拼接场景背景全景投影做360度相机渲染、投影等 二,创建立方体纹理 在 Unity 中创建和保存一个 立方体纹理(Cubema…...

类 Excel 数据填报
类 Excel 填报模式,满足用户 Excel 使用习惯 数据填报,可作为独立的功能模块,用于管理业务流程、汇总采集数据,以及开发各类数据报送系统,因此,对于报表工具而言,其典型场景之一就是利用报表模…...
vscode调试stm32,Cortex Debug的配置文件lanuch.json如何写,日志
https://blog.csdn.net/jiladahe1997/article/details/122046665 https://discuss.em-ide.com/blog/67-cortex-debug 第一版 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?li…...

Office文档图片批量导出工具
软件介绍 本文介绍一款专业的Office文档图片批量导出工具。 软件特点 这款软件能够批量导出Word、Excel和PPT中的图片,采用绿色单文件设计,体积小巧仅344KB。 基本操作流程 使用方法十分简单:直接将Word、Excel或PPT文件拖入软件…...

【iOS】ARC 与 Autorelease
ARC 与 Autorelease 文章目录 ARC 与 Autorelease前言何为ARC内存管理考虑方式自己生成的对象,自己持有非自己生成的对象,自己也可以持有不再需要自己持有的对象时释放非自己持有的对象无法释放 ARC的具体实现编译期和运行期ARC做的事情ARC实现: __autoreleasing 与 Autoreleas…...
人工智能在智能零售中的创新应用与未来趋势
随着电子商务的蓬勃发展和消费者需求的不断变化,零售行业正面临着前所未有的挑战和机遇。智能零售作为零售行业的重要发展方向,通过引入人工智能(AI)、物联网(IoT)、大数据和云计算等前沿技术,正…...
业务材料——半导体行业MES系统核心功能工业协议AI赋能
一、前置概念 半导体行业 半导体行业主要生产基于半导体材料(如硅、锗、化合物半导体等)的电子元器件及相关产品,广泛应用于计算、通信、能源、医疗等领域。 MES系统 MES系统(Manufacturing Execution System,制造…...
docker部署命令行 — 启动一个 MySQL 数据库服务 并且把它的数据存储挂载到卷(volume)里
挂载卷的配置写法: version: "3" services:db:image: mysqlvolumes:- mysql_data:/var/lib/mysqlvolumes:mysql_data:这段 docker-compose.yml 配置非常典型,是用来启动一个 MySQL 数据库服务 并且把它的数据存储挂载到卷(volume&…...

铁电液晶破局 VR/AR:10000PPI 重构元宇宙显示体验
一、VR/AR 沉浸感困境:传统显示技术的天花板在哪? (一)纱窗效应与眩晕感:近眼显示的双重枷锁 当用户戴上 VR 头显,眼前像素网格形成的 “纱窗效应” 瞬间打破沉浸感。传统液晶 500-600PPI 的像素密度&…...
2025年微信小程序开发:AR/VR与电商的最新案例
引言 微信小程序自2017年推出以来,已成为中国移动互联网生态的核心组成部分。根据最新数据,截至2025年,微信小程序的日活跃用户超过4.5亿,总数超过430万,覆盖电商、社交、线下服务等多个领域(WeChat Mini …...