Qt 打卡小程序总结
1.Qt::Alignment(枚举类型)用于指定控件或文本的对齐方式
Qt::AlignLeft:左对齐。Qt::AlignRight:右对齐。Qt::AlignHCenter:水平居中对齐。Qt::AlignTop:顶部对齐。Qt::AlignBottom:底部对齐。Qt::AlignVCenter:垂直居中对齐。Qt::AlignCenter:等价于Qt::AlignHCenter | Qt::AlignVCenter,即水平和垂直都居中对齐
2.保存为文本文件
void MainWindow::saveLog()
{//保存为日志文件,但是每次都是plainTextEdit覆盖QFile file(fileName);if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream out(&file);out << ui->plainTextEdit->toPlainText()<<endl;file.close();// 提示用户保存成功(可选)ui->statusbar->showMessage("save Successfully",2000);} else {// 处理文件打开失败的情况(可选)ui->statusbar->showMessage("Fail to save",2000);}
}
void MainWindow::saveLog_Append()
{//保存为日志文件,与上不同是QIODevice的方式QFile file(fileName);if (file.open(QIODevice::WriteOnly | QIODevice::Append)) {QTextStream out(&file);out << ui->plainTextEdit->toPlainText();file.close();// 提示用户保存成功(可选)ui->statusbar->showMessage("save Successfully",2000);} else {// 处理文件打开失败的情况(可选)ui->statusbar->showMessage("Fail to save",2000);}
}
void MainWindow::saveLog_Stream(QString strMessage)
{//换一种方式写入QFile file(fileName);if (file.open(QIODevice::WriteOnly | QIODevice::Append)) {QTextStream stream(&file);stream << strMessage << endl; // 使用Qt::endl来确保跨平台兼容性// file.flush(); // 可选,因为close()会刷新缓冲区file.close();}else{// 处理文件打开失败的情况qDebug() << "无法打开文件!";}
}
3.边框样式(QFrame::Shape)
QFrame::NoFrame:没有边框。QFrame::Box:简单的矩形边框。QFrame::Panel:与Box类似,但通常用于面板或窗口部件的背景。QFrame::WinPanel:在 Windows 风格下,类似于Panel,但在某些系统上可能有特定的绘制风格。QFrame::HLine:水平线条。QFrame::VLine:垂直线条。QFrame::StyledPanel:使用当前样式表(如果可用)来绘制边框。QFrame::Plain:与NoFrame类似,但在某些平台上可能有细微的差别。QFrame::Raised:凸起的边框。QFrame::Sunken:凹陷的边框。
4.阴影效果(QFrame::Shadow)
QFrame::Plain:没有阴影效果。QFrame::Raised:凸起的阴影效果。QFrame::Sunken:凹陷的阴影效果。
组合使用
frame->setFrameStyle(QFrame::Box | QFrame::Sunken);//一个凹陷的矩形边框
5.为标签添加超链接
QLabel *labVersion = new QLabel("版本标签");//ctrl+Alt+down 快速向下复制
labVersion->setFrameStyle(QFrame::Box|QFrame::Raised);//矩形边框和突起
labVersion->setText(tr("<a href=\"http://www.baidu.com\">超链接测试</a>"));
labVersion->setOpenExternalLinks(true);//设置可以打开网站链接
ui->statusbar->addPermanentWidget(labVersion);//显示永久信息
6.创建菜单栏
QAction * newAct = new QAction(QIcon( ":/img_zll/images/100" ), tr( "新建" ), this ); newAct->setShortcut(tr("Ctrl+N" ));
newAct->setStatusTip(tr("新建文件" ));// QMenu *fileMenu = ui->menuBar->addMenu(tr("&File"));//创建主目录
QMenu *fileMenu = menuBar()->addMenu(tr( "文件" ));
fileMenu->addAction(newAct);
fileMenu->addSeparator();//添加间隔器
7.设置应用程序窗口的图标
制作图标:ICO图标在线转换_ICO图标制作工具_PNG在线转ICO - ICO吧
QIcon icon(":/img_zll/images/paper.png"); // 使用资源路径或文件路径
w.setWindowIcon(icon);//或许也可以这样?
//1、将ico格式图片放入main文件同级目录。
//2、在pro文件中添加:RC_ICONS = myico.ico#配置桌面软件图标
8.任务栏托盘菜单
restoreWinAction = new QAction("恢复(&R)",this);quitAction = new QAction("退出(&Q)",this);//恢复connect(restoreWinAction,SIGNAL(triggered()),this,SLOT(if_restoreWinAction_selected()));//退出connect(quitAction,SIGNAL(triggered()),qApp,SLOT(quit()));myAppMenu = new QMenu((QWidget*)QApplication::desktop());//添加菜单myAppMenu->addAction(restoreWinAction);//分隔符myAppMenu->addSeparator();myAppMenu->addAction(quitAction);//判断系统是否支持托盘图标if(!QSystemTrayIcon::isSystemTrayAvailable()){return;}QSystemTrayIcon *myTrayIcon = new QSystemTrayIcon(this);//设置图标myTrayIcon->setIcon(QIcon(":/img_zll/images/time.ico"));//鼠标放托盘图标上提示信息myTrayIcon->setToolTip("打卡记录");//设置消息myTrayIcon->showMessage("托盘","托盘管理",QSystemTrayIcon::Information,10000);//托盘菜单myTrayIcon->setContextMenu(myAppMenu);//显示myTrayIcon->show();
//恢复
void MainWindow::if_restoreWinAction_selected()
{this->show();
}
9.状态栏
QStatusBar:状态栏
状态信息分为三类:
1、临时信息 showMessage();
2、正常信息 addWidget添加一个QLable到状态栏显示
3、永久信息 addPermanentWidget
ui->statusBar->showMessage(tr("离开工位"),2000);QLabel *lable = new QLabel(this);
lable->setFrameStyle(QFrame::Box|QFrame::Sunken);
lable->setText("永远相信美好的事情即将发生");// 创建一个容器小部件和水平布局 QWidget *container = new QWidget; QHBoxLayout *layout = new QHBoxLayout(container); // 创建一个水平间隔器 QSpacerItem *spacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); // 创建QLabel QLabel *label = new QLabel("标签"); // 将间隔器和QLabel添加到水平布局中 layout->addItem(spacer); // 间隔器放在前面 layout->addWidget(label); // QLabel放在间隔器后面 // 设置容器的布局 container->setLayout(layout); // 将容器小部件添加到状态栏中 statusBar->addWidget(container);
10.样式
10.1内置样式
#include <QApplication>
#include <QStyleFactory>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 设置Fusion样式app.setStyle(QStyleFactory::create("Fusion"));// 设置Windows样式// app.setStyle(QStyleFactory::create("Windows"));// 设置macOS样式// app.setStyle(QStyleFactory::create("Macintosh"));// 设置WindowsVista样式// app.setStyle(QStyleFactory::create("WindowsVista"));// 设置WindowsXP样式// app.setStyle(QStyleFactory::create("WindowsXP"));// ... 创建和显示Qt对象return app.exec();
}
10.2 外部样式表
// main.cpp#include <QApplication>
#include <QFile>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建一个样式表文件对象QFile styleFile(":/styles.qss"); // 根据实际的文件路径或资源路径进行修改if (styleFile.open(QFile::ReadOnly)){// 读取样式表文件内容QString styleSheet = QLatin1String(styleFile.readAll());// 设置样式表app.setStyleSheet(styleSheet);}// ... 创建和显示Qt对象return app.exec();
}
10.3样式的使用
10.3.1选择器
选择器(Selectors):用于选择要应用样式的UI元素,可以使用对象名(object name)或类名(class name)作为选择器,也可以使用通配符和层级选择器
//选择器
QPushButton {color: red; // 应用到所有QPushButton类型的按钮
}QCheckBox#myCheckBox {font-size: 14px; // 应用到objectName为"myCheckBox"的QCheckBox
}QLabel.warning {background-color: yellow; // 应用到class name为"warning"的QLabel
}
10.3.2属性设置
可以使用属性和值的形式来设置UI元素的外观
QCheckBox:checked {color: green; // 设置选中状态的文本颜色
}
10.3.3盒模型属性
可以设置内边距(padding),外边距(margin),以及元素本身的尺寸和位置
QPushButton {padding: 5px;margin: 10px;width: 100px;height: 30px; // 设置内外边距、宽度和高度
}QLabel {position: absolute; // 设置绝对定位top: 50px;left: 100px;
}
10.3.4伪状态(Pseudo-states)
用于设置特定状态下的样式,如鼠标悬停(hovered)、按下(pressed)
QPushButton:hover {background-color: lightgray; // 鼠标悬停时的背景颜色
}/* 设置按下按钮时的背景颜色和文本样式 */
QPushButton:pressed {background-color: darkgray;color: white;
}/* 设置表格中奇数行的背景颜色 */
QTableView QAbstractItemView::item:nth-child(odd) {background-color: lightgray;
}/* 设置选中行的背景颜色和文本颜色 */
QTableView QAbstractItemView::item:selected {background-color: navy;color: white;
}QCheckBox:indeterminate {color: orange; // 设置不确定状态的文本颜色
}QRadioButton:checked {image: url(checked.png); // 设置选中状态时的自定义图像
}
相关文章:
Qt 打卡小程序总结
1.Qt::Alignment(枚举类型)用于指定控件或文本的对齐方式 Qt::AlignLeft:左对齐。Qt::AlignRight:右对齐。Qt::AlignHCenter:水平居中对齐。Qt::AlignTop:顶部对齐。Qt::AlignBottom:底部对齐。…...
【qt】标准项模型
标准项模型 一.使用标准型项模型1.应用场景2.界面拖放3.创建模型4.配套模型5.视图设置模型6.视图属性的设置 二.从文件中拿到数据1.文件对话框获取文件名2.创建文件对象并初始化3.打开文件对象4.创建文本流并初始化5.读取文本流6.关闭文件7.完整代码 三.为模型添加数据1.自定义…...
一文深度剖析 ColBERT
近年来,向量搜索领域经历了爆炸性增长,尤其是在大型语言模型(LLMs)问世后。学术界开始重点关注如何通过扩展训练数据、采用先进的训练方法和新的架构等方法来增强 embedding 向量模型。 在之前的文章中,我们已经深入探…...
css左右滚动互不影响
想实现左右都可以滚动,且互不影响。 只需要再左边的css里面 .threedlist {cursor: pointer;width: 280px;position: fixed;height: 100vh; /* 定义父容器高度 */overflow-y: auto; /* 只有在内容超过父容器高度时才出现滚动条 */} 如果想取消滚动条样式 .threedli…...
【linux-uboot移植-mmc及tftp启动-IMX6ULL】
目录 1. uboot简介2. 移植前的基本介绍:2.1 环境系统信息: 3. 初次编译4. 烧录编译的u-boot4.1 修改网络驱动 5. 通过命令启动linux内核5.1 通过命令手动启动mmc中的linux内核5.1.1 fatls mmc 1:15.1.2 fatload mmc 1:1 0x80800000 zImage5.1.3 fatload mmc 1:1 0x8…...
Python-温故知新
1快速打开.ipynb文件 安装好anaconda后,在需要打开notebook的文件夹中, shift键右键——打开powershell窗口——输入jupyter notebook 即可在该文件夹中打开notebook的页面: 2 快速查看函数用法 光标放在函数上——shift键tab 3......
绿联NAS DXP系列发布:内网穿透技术在私有云的应用分析
5月23日,绿联科技举行了“新一代存储方式未来已来”发布会,发布了绿联NAS私有云DXP系列(包括两盘位到八盘位的九款新品)以及由绿联科技自研的全新NAS系统UGOS Pro。此次绿联发布的DXP系列九款产品,共有两盘位、四盘位、…...
力扣:242. 有效的字母异位词
242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s "anagram", t "nagaram"…...
设计模式14——组合模式
写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 组合模式(Composit…...
MyBatis面试题(Mybaits的优点、缺点、适用场合、与Hibernate有哪些不同)
一、Mybaits的优点: 1、基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任 何影响,SQL 写在 XML里,解除 sql与程序代码的耦合,便于统一管理;提供 XML 标签,支持…...
python写接口性能测试
import time import requestsdef measure_response_time(api_url):try:start_time time.time()response requests.get(api_url, timeout10) # 设置超时时间为10秒end_time time.time()response_time end_time - start_timeprint(f"接口 {api_url} 的响应时间为&#…...
《暮色将尽》跨越世纪的历程,慢慢走向并完善自我
《暮色将尽》跨越世纪的历程,慢慢走向并完善自我 戴安娜阿西尔(1917-2019),英国知名文学编辑、作家。著有《暮色将尽》《昨日清晨》《未经删节》《长书当诉》等。 曾嵘 译 文章目录 《暮色将尽》跨越世纪的历程,慢慢走…...
python-鸡兔同笼问题:已知鸡和兔的总头数与总脚数。求笼中鸡和兔各几只?
【问题描述】典型的鸡兔同笼问题。 【输入形式】输入总头数和总脚数两个实数:h,f 【输出形式】笼中鸡和兔的个数:x,y 【样例输入】16 40 【样例输出】鸡12只,兔4只 【样例说明】输入输出必须保证格式正确。…...
【NumPy】关于numpy.transpose()函数,看这一篇文章就够了
🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…...
什么是住宅IP代理?为什么需要家庭 IP 代理
家庭代理 IP 允许您选择特定位置(国家、城市或移动运营商)并作为代理上网该区域的真实用户。住宅代理 IP 可以定义为保护用户免受一般网络流量影响的中介。它们在隐藏您的 IP 地址的同时充当缓冲区。住宅代理 IP 是服务提供商分配给用户的替代 IP 地址。…...
Java方法的重载
Java方法的重载 前言一、为什么要有重载代码示例问题 代码示例 二、重载的使用代码示例 三、重载的规则针对同一个类代码示例 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分…...
RabbitMQ 消息队列安装及入门
市面常见消息队列中间件对比 技术名称吞吐量 /IO/并发时效性(类似延迟)消息到达时间可用性可靠性优势应用场景activemq万级高高高简单易学中小型企业、项目rabbitmq万级极高(微秒)高极高生态好(基本什么语言都支持&am…...
K8S认证|CKA题库+答案| 14. 排查故障节点
14、排查集群中的故障节点 CKA v1.29.0模拟系统免费下载试用: 百度网盘:https://pan.baidu.com/s/1vVR_AK6MVK2Jrz0n0R2GoQ?pwdwbki 题目: 您必须在以下Cluster/Node上完成此考题: Cluster …...
Linux:网络管理命令之ss
一、ss命令介绍 Linux下的ss命令是Socket Statistics的缩写,也被称为IPC(Inter-Process Communication)套接字统计。这是一个强大的网络管理命令,主要用于获取系统中socket的统计信息,可以帮助系统管理员诊断和排查网络…...
数据结构-队列(带图详解)
目录 队列的概念 画图理解队列 代码图理解 代码展示(注意这个队列是单链表的结构实现) Queue.h(队列结构) Queue.c(函数/API实现) main.c(测试文件) 队列的概念 队列(Queue)是一种基础的数据结构,它遵循先进先出(First In …...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
