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);        // 设置选中状态时的自定义图像
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python表达式解析的陷阱与技巧

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;表达式的复杂性 二、案例分析&#xff1a;表达式的解读 三、陷阱揭示…

解决问题:Collecting package metadata (current_repodata.json)--faile

目录 解决步骤&#xff1a; 1、创建pip.ini文件&#xff1a;winR对话框中复制输入&#xff1a;%APPDATA%&#xff0c;然后回车。 2、conda添加清华源&#xff1a; 3、这些创建完&#xff0c;重启电脑就可以创建你的虚拟环境了 4、利用镜像源下载库&#xff1a; 5、查看to…

AOP总结

AOP是什么 AOP是面向切面编程&#xff0c;其目的是将横切关注点从核心业务代码中分离出来&#xff0c;通过动态代理等方式&#xff0c;实现代码的增强和解耦&#xff0c;使得其具有更好的可维护性和可扩展性。 其中横切关注点是多个类或对象的公共行为&#xff0c;如事务管理…

2024宝藏工具EasyRecovery数据恢复软件免费版本下载

在这个数字化的时代&#xff0c;数据已经成为我们生活中的重中之重。无论是工作中的重要文件&#xff0c;还是手机中珍贵的照片&#xff0c;我们都依赖着这些数据。然而&#xff0c;数据丢失的情况时有发生&#xff0c;可能是误删&#xff0c;可能是设备故障&#xff0c;更可能…

java-方法

在 Java 编程语言中&#xff0c;方法是一段用于执行特定任务的代码。方法是面向对象编程&#xff08;OOP&#xff09;的基础之一&#xff0c;因为它允许我们在对象上执行操作。在 Java 中&#xff0c;方法是类的组成部分&#xff0c;这意味着它们与类紧密相关。本解释将涵盖 Ja…

vue3和vite实现vue-router4版本路由的配置以及自动生成路由配置

这个是普通的手动路由配置&#xff1a;https://blog.csdn.net/weixin_68658847/article/details/130071101 自动路由配置 创建项目 npm create vitelatest my-vue-app -- --template vue // 或者 yarn create vite my-vue-app --template vue// 安装路由 yarn add vue-route…

Ansible02-Ansible Modules模块详解

目录 写在前面4. Ansible Modules 模块4.1 Ansible常用模块4.1.1 Command模块4.1.2 shell模块4.1.3 scrpit模块4.1.4 file模块4.1.5 copy模块4.1.6 lineinfile模块4.1.7 systemd模块4.1.8 yum模块4.1.9 get_url模块4.1.10 yum_repository模块4.1.11 user模块4.1.12 group模块4.…

IPv4 报头 Protocol 字段和 IPv6 报头 Next header 字段中的 IP 协议号列表

IPv4 基本报头&#xff08;20 ~ 60 Byte&#xff09; IPv6 基本报头&#xff08;40 Byte&#xff09; IPv4 Header vs IPv6 Header 黄色 为 IPv6 与 IPv4 相同 红色 为 IPv6 删除的 蓝色 为名称不同功能相同 中青色 为新增的 Type of service Traffic Class &#xff08;用于…

js知识点汇总之let const 和 var的区别

let const 和 var的区别 作用域 ES5 中的作用域有&#xff1a;全局作用域、函数作用域&#xff0c;ES6 中新增了块级作用域。块作用域由 { } 包括&#xff0c;if 语句和 for 语句里面的 { } 也属于块作用域。 var关键字 没有块级作用域的概念 // global scope {var a 10;…

AGI系列(2):掌握AI大模型提示词优化术,从容应对各种提问场景

在上一篇大模型提示词的文章中&#xff0c;笔者介绍一种通用提示词优化的方法&#xff0c;这种方法基本上可以覆盖大部分人的一般场景需求。 没看到上文的读者&#xff0c;可以通过如下链接去看下&#xff1a; &#x1f449;&#x1f449;&#x1f449; AGI系列&#xff08;1&a…

全网首发UNIAPP功能多的iapp后台源码

全网首发UNIAPP功能多的iapp后台源码&#xff0c;众所周知UN Dev Assist 后台是一款既不免费又不好用的后台今天直接分享。 搭建教程在里面了&#xff0c;自己查看。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89291994 更多资源下载&#xff1a;…

【Python】处理不平衡数据集的高级方法:ADASYN详解

原谅把你带走的雨天 在渐渐模糊的窗前 每个人最后都要说再见 原谅被你带走的永远 微笑着容易过一天 也许是我已经 老了一点 那些日子你会不会舍不得 思念就像关不紧的门 空气里有幸福的灰尘 否则为何闭上眼睛的时候 又全都想起了 谁都别说 让我一个人躲一躲 你的承诺 我竟然没怀…

汇编原理(二)

寄存器&#xff1a;所有寄存器都是16位&#xff08;0-15&#xff09;&#xff0c;可以存放两个字节 AX,BX,CX,DX存放一般性数据&#xff0c;称为通用寄存器 AX的逻辑结构。最大存放的数据为2的16次方减1。可分为AH和AL&#xff0c;兼容8位寄存器。 字&#xff1a;1word 2Byte…

JVM学习-Class文件结构②

访问标识(access_flag) 在常量池后&#xff0c;紧跟着访问标记&#xff0c;标记使用两个字节表示&#xff0c;用于识别一些类或接口层次的访问信息&#xff0c;包括这个Class是类还是接口&#xff0c;是否定义为public类型&#xff0c;是否定义为abstract类型&#xff0c;如果…

健身房会员管理系统服务预约小程序的作用是什么

拥有完美身材/减肥/锻炼等前往健身房是个不错的选择&#xff0c;商家生意开展需要吸引同城客户并转化&#xff0c;客户也有自己的判断需要找到更全面的场地&#xff1b;完善客户消费流程利于品牌发展和不断获客转化。 运用【雨科】平台搭建健身房管理系统小程序&#xff0c;多…

MySQL事务篇1:事物的四大特性(ACID)、三类数据读取问题与隔离级别

一、什么是事务&#xff1f; MySQL的事务&#xff08;Transaction&#xff09;是一组由数据库管理系统&#xff08;DBMS&#xff09;执行的一个或多个SQL语句的集合&#xff0c;这些SQL语句作为一个单独的工作单元执行。事务的主要目的是确保数据库的一致性和完整性&#xff0c…

蓝桥杯2023(十四届)省赛——飞机降落(双马尾DFS)

飞机降落&#xff08;DFS&#xff09; 蓝桥杯2023年第十四届省赛真题-飞机降落 - C语言网 (dotcpp.com) 一开始我是真的没想到用DFS做&#xff0c;我还在想用什么策略排序呢。需要再刷&#xff01;&#xff01;&#xff01; 双马尾的意思其实是刷了两次... 一刷&#xff1a…

leecode 637 二叉树的层平均值

leetcode 二叉树相关-层序遍历专题 二叉树的层序遍历一般来说&#xff0c;我们是利用队列来实现的&#xff0c;先把根节点入队&#xff0c;然后在出队后将其对应的子节点入队&#xff0c;然后往复此种操作。相比于二叉树的遍历递归&#xff0c;层序遍历比较简单&#xff0c;有…

CHI协议_1

作者&#xff1a;someone链接&#xff1a;https://www.zhihu.com/question/304259901/answer/3455648666来源。 1. AMBA CHI简介 一致性总线接口&#xff08;CHI&#xff09;是AXI一致性扩展&#xff08;ACE&#xff09;协议的演进。它是Arm的AMBA总线的一部分。AMBA是一种免…

美团Java社招面试题真题,最新面试题

如何处理Java中的内存泄露&#xff1f; 1、识别泄露&#xff1a; 使用内存分析工具&#xff08;如Eclipse Memory Analyzer Tool、VisualVM&#xff09;来识别内存泄露的源头。 2、代码审查&#xff1a; 定期进行代码审查&#xff0c;关注静态集合类属性和监听器注册等常见内…