[Qt] 界面美化 [2013-06-17更新]

Qt界面美化:调色板下的艺术画布 Qt界面美化就像是在调色板下的艺术画布上作画,通过精心挑选的颜色和巧妙的布局,为应用程序赋予独特的外观和用户体验。通过形象的比喻和具体例子,我们希望读者更好地理解Qt界面美化的概念、工作原理和应用场景,学会在调色板下释放创造力,打造出令人印象深刻的用户界面。就像在设计师的画布上,每一个控件都是一次精彩的创作,每一行样式表都是一幅独特的画作,为应用程序注入了艺术的灵感和魅力。在Qt的编程世界里,界面美化是一场调色板上的艺术盛宴,让开发者在色彩的海洋中徜徉,创造出属于自己的视觉奇迹。 阅读详情
- 经验总结

1. 可用对话框(QDialog)模拟类似Android中toast的效果。



- 设置程序界面风格

在main函数中
QApplication::setStyle("windows");
QApplication::setStyle("windowsxp");
QApplication::setStyle("motif");
QApplication::setStyle("cde");
QApplication::setStyle("macintosh");
QApplication::setStyle("plastique");

风格可以是 "windows", "motif", "cde", "plastique", "windowsxp", "macintosh"



- 设置窗口样式

setWindowFlags(flags)

flags:
Qt::WindowContextHelpButtonHint
Qt::FramelessWindowHint               // 去掉标题栏
Qt::CustomizeWindowHint
Qt::WindowTitleHint                   // 只有标题栏,没有窗口控制按钮
Qt::WindowSystemMenuHint
Qt::WindowCloseButtonHint
Qt::WindowMaximizeButtonHint
Qt::WindowMinimizeButtonHint
Qt::SubWindow
Qt::Desktop
Qt::SplashScreen
Qt::ToolTip
Qt::Tool

// 没有标题栏图标、没有任何按钮,只有标题
Qt::CustomizeWindowHint | Qt::WindowTitleHint

用法一:
clientMainWindow::clientMainWindow(QWidget *parent) :
    QMainWindow(parent, Qt::WindowCloseButtonHint)
{
    ...
}

用法二:
clientMainWindow::clientMainWindow(QWidget *parent) :
    QMainWindow(parent )
{
    ...
    this->setWindowFlags(Qt::WindowCloseButtonHint);
    ...
}



- 窗口在屏幕居中显示

#include <QDesktopWidget>

方法一:
w.move((QApplication::desktop()->width() - w.width()) / 2,
       (QApplication::desktop()->height() - w.height()) / 2);

方法二:
QDesktopWidget *desktop = QApplication::desktop();     // = qApp->desktop() 也可以
w.move((desktop->width() - this->width()) / 2,  (desktop->height() - this->height()) / 2);

注:w 为Qt窗口对象(如QMainWindow、QDialog等)



- 修改UI程序在桌面的起始位置

在程序中加入如下代码即可:
w.move(x, y);     // 屏幕左上角为(0, 0),x、y为相对于(0, 0)的偏移值
                  // w为Qt窗口对象(可以是QMainWindow、QDialog等)



- 去掉标题栏左侧的图标

1. 创建透明图标
    使用PhotoShop创建一个透明的图标
    参考设置:
        大小:1 X 1 px
        名称:logo.png

2. 添加图标到工程
    1) 在工程目录下创建“res”目录,将logo.png拷贝到此目录
    2) 在工程中添加一个资源文件,命名为“icon.qrc”
    3) 在icon.qrc中添加一个前缀(此处为“res”),在该前缀下添加一个文件,把logo.png添加进来
    4) 为logo.png设置别名(此处把别名设为与文件名相同,即“logo.png”)
    注意:在工程中调用时使用的是别名。

3. 设置窗口图标
    QWidget.setWindowIcon(QIcon(":res/logo.png"));
    注意:“res”为资源文件(.qrc)中的前缀,“logo.png”为logo.png的别名,不要遗漏了前面的“:”

4. 测试
    完成上述操作后,重新构建工程并执行即可看到效果



- 鼠标指针

1. 隐藏指针
#include <QWSServer>
...
QWSServer::setCursorVisible(FALSE);                  // 添加在MainWindow的构造函数中

2. 设置指针样式
QApplication::setOverrideCursor(Qt::WaitCursor);     // 设置指针为等待状态(漏斗状)
QApplication::restoreOverrideCursor();               // 还原鼠标指针为默认



- 修改控件样式
 
1. QLabel
ui->label->setText("<b><font color=blue size=30>test!</font></b>");   // 修改QLabel文字样式
ui->label->setPixmap(QPixmap(":res/logo_png"));       // 显示图片
ui->label->setScaledContents(true);                   // 图片适应label大小(在显示图片前调用)
ui->label->setWordWrap(true);                         // 自动换行(生效前提:内容包含中文或间隔符,如空格)

2. QLineEdit
// 无边框,背景透明
ui->lineEdit->setStyleSheet("QLineEdit{background-color: rgba(0,0,0,0);border-width:0;border-style:outset}"); 

3. QPushButton
ui->pb->setStyleSheet("background:red");       // 改变QPushButton颜色
* 其他可用的颜色还有 yellow、blue、green、black、white等。

4. QDockWidget
QWidget* titleWidget = new QWidget(this);
ui->dockWidget->setTitleBarWidget(titleWidget);       // 隐藏标题栏

! 清除所有样式
ui->pb->setStyleSheet("");
or
ui->pb->styleSheet().clear();

! 去掉控件焦点
widget->setFocusPolicy(Qt::NoFocus);



- 半透明窗体

1. 制作一张半透明背景图片(PNG格式,调节适当的透明度)
2. 加入如下代码:
this->move(0, 0);                                        // 定位窗体显示位置
this->setWindowFlags(Qt::FramelessWindowHint);           // 必须设置为这种窗体风格
this->setAttribute(Qt::WA_TranslucentBackground);        // 设置“透明背景”属性

注意:若使用上述方法不能将窗体设置为Qt::FramelessWindowHint风格,则可尝试下述方式:
BNumPad::BNumPad(QWidget *parent) :
    QDialog(parent, Qt::FramelessWindowHint),
    ui(new Ui::BNumPad)
{
    ...
}



-  在文本框中显示图标

1. 用一个 QFrame/QLabel 显示图标,将其置于QLineEdit上方。
2. 设置QLineEdit属性。
    ui->lineEdit->setTextMargins(21, 0, 0, 0);     // 将图标置于QLineEdit左侧的设置方法



- 启动界面示例

#include <QtGui/QApplication>
#include <QSplashScreen>
#include <QTimer>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
   
    QPixmap pixmap(":res/bg");
    QSplashScreen splash(pixmap);
    splash.show();

    QTimer::singleShot(1500, &splash, SLOT(hide()));
    QTimer::singleShot(2000, &w, SLOT(show()));

    return a.exec();
}


qtdesigner界面美化 pyqt5使用qtdesigner设计界面并且美化界面教学 阅读详情

相关推荐

Python计算器开发指南:从基础到高级实现

计算器作为编程入门经典项目,涵盖了变量操作、条件判断和异常处理等Python核心概念。通过函数封装和模块化设计,开发者可以构建支持四则运算的基础计算器,并逐步扩展科学计算、GUI界面等高级功能。本文重点解析使用try-except处理输入验证、decimal模块解决浮点数精度问题等关键技术难点,并演示如何通过Tkinter和PyQt实现图形界面。项目实践表明,良好的错误处理机制和单元测试是保证计算器健壮性的关键,而eval的安全替代方案则能有效防范代码注入风险。这些技术方案不仅适用于计算器开发,也可推广至其

weixin_30509393的博客 500

Qt样式表、QSS、QT界面美化、Qt框架、Qt5、Qt编程

Qt是由Qt Company开发的主流跨平台的漂亮绚丽的用户界面应用程序开发的C++框架。Qt是面向对象的框架、容易扩展,并且允许真正地组件编程,既可以开发GUI程序,也可用于控制台工具和服务器。其跨平台集成开发环境Qt Creator 全面支持Windows ,mac、Linux、iOS、Android、WP等。Qt样式表(Qt  Style Sheet)Qt框架受HTML中的层级样式表(Cascading Style Sheets,CSS)的启发,产生了QSS, QSS用于定义各种界面组件(QWidget类及其子类)的外观样式,从而使Qt界面呈现绚丽漂亮的换肤效果。 本课程主要帮助学员熟练掌握Qt 5框架下的样式表、界面美化,通过Qt控件的界面美化案例的详细讲解演示,使用Qt框架做出各种绚丽的界面效果、迅速帮助学员达到企业级Qt开发工程师的能力! 适合希望达到企业级Qt框架开发水平的童鞋,希望Qt编程能力大幅度提升的童鞋!

Docker 部署 pgAdmin 4 最佳实践:安全、可复现、团队就绪

pgAdmin 是 PostgreSQL 官方推荐的图形化管理工具,其核心价值在于将数据库运维从命令行操作升维为可视化、可审计的工作流。依托 Docker 容器化技术,pgAdmin 4 能实现环境隔离、配置即代码、跨平台一致等关键能力,显著降低本地开发、CI 测试与客户演示中的环境差异风险。结合自定义网络、健康检查、servers.json 预置连接和 volume 持久化等工程实践,可构建高可靠、易协作的 PostgreSQL 开发单元。本文聚焦容器化部署中真实高频问题——如 DNS 解析失败、服务启动

weixin_34411563的博客 538

QT界面美化

转自点击打开链接 - 经验总结 1. 可用对话框(QDialog)模拟类似Android中toast的效果。 - 设置程序界面风格 在main函数中 QApplication::setStyle("windows"); QApplication::setStyle("windowsxp"); QApplication::setStyle("m...

weixin_44161807的博客 1万+

Qt美化界面的实用技巧

通过使用样式表、图标和图片,以及自定义控件样式,你可以轻松地美化Qt应用程序的界面。在实际开发中,你可以根据项目的需求进一步探索和定制界面的外观,提供更好的用户体验。在上述示例中,我们将按钮的背景色设置为蓝色,字体颜色设置为白色,边框圆角设置为5像素,内边距设置为10像素。通过类似的方式,你可以定制其他控件的外观。Qt是一款功能强大的跨平台应用程序开发框架,它提供了丰富的界面设计工具和库,使开发者能够创建出美观、易用的用户界面。在本文中,我将分享一些Qt美化界面的实用技巧,并提供相应的源代码示例。

DevNinja的博客 993

史上最强QT自定义界面纯QSS

找遍百度谷歌,潜心钻研官方QSS应用示例http://qt-project.org/doc/qt-4.8/stylesheet-examples.html,陆续完善三个月,终于得出一套自定义UI的QSS方案,只需要查找替换对应七个颜色值,就可制作出一套精美皮肤!

[Qt] 界面美化 [2013-06-17更新](转载)

- 经验总结1. 可用对话框(QDialog)模拟类似Android中toast的效果。 - 设置程序界面风格在main函数中QApplication::setStyle("windows");QApplication::setStyle("windowsxp");QApplication::setStyle("motif");QApplication::setStyl...

131

Akamai-3.0补环境逆向-DHL快递查询

那么我们的请求过程就是:1.请求首页的html文件,通过re或xpath,提取到这个url,拼接官网地址,得到这个js文件的地址。返回的_abck为0,表示环境正确,请求搜索接口返回200,说明返回的_abck正确,如果过程错误或环境补的有问题会返回403或428这两个状态码。那么,就是这个包返回的,而且这个包需要请求两次,第一次get请求,返回的这个-1的cookie,第二次请求,带上一个sensor_data的参数,进行post请求,最终返回这个0的cookie,代表你过了akamai这个盾。

2302_76420666的博客 2857

gnome桌面打造日常使用操作系统(支持Arch Linux、Fedora、Ubuntu)(2022.04.17更新)

一、安装chrome yay google-chrome 无法显示中文: 安装中文字体即可正常显示: yay noto-fonts-cjk 二、安装中文输入法

Mculover666的博客(嵌入式) 1万+

小新学习K8s第一天之K8s基础概念

kubernetes是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化。它拥有庞大且快速发展的生态系统。kubernetes服务,支持和工具随处可见。作用:用于自动部署,扩展和管理“容器化应用程序”的开源系统。可以理解成k8s是负责自动化运维管理多个容器化程序(比如docker)的集群,是一个生态及其丰富的容器编排框架工具。

pangdongqiqi的博客 1228

通达信筹码分布主图源码分享

NOTEXT下区成本:IF(CURRBARSCOUNT<=CONST(XA_26+1),CONST(IF(1,XA_94,XA_94)),DRAWNULL),DOTLINE,COLORYELLOW;NOTEXT上区成本:IF(CURRBARSCOUNT<=CONST(XA_26+1),CONST(IF(1,XA_81,XA_81)),DRAWNULL),DOTLINE,COLORRED;FFG1:DRAWBAND(C线,RGB(255,0,0),XA_33,RGB(255,0,0));

zhibiaogong的博客 3357

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 552

基于python+mediapipe的手势拖动识别(无gpu)

手势点方块拖动

weixin_38029956的博客 5982

PyQt5-新手避坑指南(持续更新)

本文总结了PyQt5开发中的常见问题及解决方案,包括: 程序异常退出时显示详细报错信息的方法 qrc资源文件的使用与管理 QLabel文字自动换行和图片自适应大小的实现 自定义QCheckBox样式导致勾选标记消失的修复 多线程处理耗时操作的实现方案 无边框窗口的实现、移动和大小调整技巧 窗口最大化/还原动画效果 文章针对PyQt5初学者常见问题提供了实用解决方案,涉及UI设计、资源管理、性能优化等多个方面,并附有代码示例和效果演示图。

懷淰メ的博客 3727

【人工智能】从零开始玩转龙虾(Openclaw):本地与云端(火山Arkcloud)部署全指南

龙虾(Openclaw)是一款海外智能体操作系统(agent operating system),可通过飞书机器人实现自动化办公、信息抓取、任务协作等功能。它支持本地部署和云端部署两种方式,适配MacOS和Windows系统(,建议优先使用MacOS)。sudo。

奶爸的编程之路,也就一周冷个三天 947

【音视频基础】一篇搞懂视频的各种封装格式

在现代多媒体处理中,视频封装格式扮演着至关重要的角色。不同的封装格式决定了视频文件的存储方式、兼容性以及功能特性。无论是观看高清视频、编辑电影剪辑,还是在互联网上流式传输内容,理解各种视频封装格式的基础知识都是必不可少的。在这篇文章中,我们将详细介绍常见的视频封装格式,探讨为什么需要这些格式,以及它们各自的功能和区别,帮助你在选择和使用视频格式时做出更明智的决定。WEBM理解各种视频封装格式的功能和区别对于选择合适的格式至关重要。

m0_62599305的博客 2479

工作日志记录

记录工作中细碎的感悟和经验,持续补充中。

WSTONECH的博客 497

ICC2(一)import design —— tluplus

itf转tluplus相关命令 TLUPlus是存储RC系数的二进制表格式。 TLUPlus模型通过包括宽度,空间,密度和温度对电阻系数的影响,可以估算RC计算net delay。 1.2 产生TLUplus的方法 Itf文件转TLUplus的命令: grdgenxo -itf2TLUPlus -i xx.itf-o xx.tlu+ itf: interconnect technology format file 含每层的厚度,面积等参数 itf同样可以转nxtgrd格式文...

m0_61544122的博客 5483

棋类游戏大全(补订版)

摘要 该项目是一个多功能棋类游戏合集,近期进行了多次功能更新和优化。主要更新内容包括: AI算法增强:8月5日对2号模式的AI进行了防守和攻击特判修改,增加了中间格优势判定,提升了游戏难度。 新玩法上线:陆续添加了五子棋AI单人模式(8月6日)、局域网联机五子棋和井字棋(8月7日)、象棋和国际象棋(8月8日)以及数独玩法(8月16日)。 系统优化:修复了多个致命错误,包括死循环BUG和函数调用错误;优化了输入系统;添加了预加载模块和界面美化功能。 用户系统:实现了积分、VIP权限和商店系统,支持用户数据保存

Damn_Japan的博客 295

GEE 案例:利用多源遥感数据计算RUSLE(Revised Universal Soil Loss Equation)土壤侵蚀

该数据集提供了全球范围内以250至500米的空间分辨率获取的多光谱图像数据,用于监测地表覆盖和变化。RUSLE模型的基本原理是通过考虑土壤侵蚀的主要驱动因素,来估计土壤侵蚀的速率。该数据集提供了全球范围内以10至60米的空间分辨率获取的多光谱图像数据,用于监测地表覆盖和变化。它对农业和土地资源管理者提供了一种评估和预测土壤侵蚀风险的工具,以制定适当的土壤保护措施和决策。2. soil(土壤)是来自OpenLandMap的土壤纹理分类数据,使用了USDA(美国农业部)土壤纹理分类系统。

此星光明博客 803

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用Lubuntu开发Android应用

  之前下了个ubuntu来编译Android源码并且开发App,后来发现桌面环境不太好用,而且32位Linux不能顺利编译Android源码。最近有空便重新下载Lubuntu 64位并配置好所有配置,其间颇多不顺。特记录下来。   通过下面的步骤连我的五年前老机子都可以可以用来进行高效率的开发工作,Eclipse打开速度、编译速度、系统流畅度以及界面美观性都跟高配置win7机子差不多。 ...

weixin_30396699的博客 288

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Qt UI界面美化

除原生界面外,Qt提供了加载配置文件的方式来自定义和美化界面外观,这个配置文件也叫做样式表(QSS:Qt Style Sheets),它的语法与css类似,具体支持属性可参考官方文档。

QtCompany的博客 4134

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Qt QSS界面美化

1、根据刘典武大佬和网上查询的资料,进行更改2、使用QSS对界面进行美化3、点击按钮,进行界面样式切换(银色和黑色)

hw5230的博客 4933

Qt界面美化指南

Qt界面美化指南

m0_73443478的博客 7110
上一篇: [Qt] 事件过滤器 [2013-06-17更新]
下一篇: [Android] ADT关联源码与API文档 [2013-06-26更新]
xb_ma
博客等级 码龄18年 23粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值