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 …...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...
二叉树-144.二叉树的前序遍历-力扣(LeetCode)
一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…...
