惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

文章列表

埃氮幂の命名空间 埃氮幂の命名空间 P13020 [GESP202506 八级] 遍历计数 题解 Moonlark(Nonebot2+Python)命令式聊天机器人插件开发记录 使用Github Actions定制Github个人主页 P3435 [POI 2006] OKR-Periods of Words 题解 Qt Troubleshoot(三) Qt Troubleshoot(二) 埃氮幂の命名空间 自己动手写三维引擎(一) 自己动手写二维物理引擎(一) 埃氮幂の命名空间 埃氮幂の命名空间 Markdown与外挂标签语法测试 Hexo博客0氪建站记录(下) 埃氮幂の命名空间 埃氮幂の命名空间
埃氮幂の命名空间
2024-12-30 · via

建立这个分类的目的

自从开始用Qt来编写应用程序之后,我发现应用的开发变得方便了许多。当然,图中难免遇到问题。我会在这个分类不断记录我遇到的问题以及我的解决过程。

1.QLabel自动换行

描述

我在使用QtWidgets.QLabel时,常常需要一个自动换行功能。查阅Qt官网,发现QLabel有个setWordWrap()方法。但是,有时即使设置了为True,它任然没有换行。

PYTHON
from PySide6.QtWidgets import *
app=QApplication([])
window=QWidget()
label=QLabel('LongWordTestLongWordTestLongWordTestLongWordTestLongWordTest',window)
label.setWordWrap(True)
window.resize(500,500)
window.show()
app.exec()

解决

这是因为QLabel只会在有空格的地方换行。所以,纯数字和纯字母都会认为是只有一个单词,所以就不会换行了。 当然,纯汉字也是会正常换行的。

2.自定义类继承QWidget不能设置样式

描述

一次,我利用QWidget来制作一个自己的窗口类,让它的对象实例化后自动显示。这个实现也很简单,这是一个简化的例子: python from PySide6.QtWidgets import * class CustomWindow(QWidget): def __init__(self): super().__init__() self.show() app=QApplication([]) window=CustomWindow() window.resize(500,500) app.exec()

后来,我有想设置一个初始的样式,把它的背景色设成绿色,在__init__(self)里面加了一行: python self.setStyleSheet('background-color: green;')

结果竟然是,QWidget还是那个QWidget,背景还是那个初始颜色,根本不是绿色

解决

经过了研究,我发现可能是有时QWidget的子类是不会自动设样式表的(在一个复杂的项目中我遇到了此问题,当我尝试简化时,这个问题消失了,但是这个问题一定存在)。 有两种解决方法。

第一种:改变父类

QWidget可能有问题,但是QFrame不会有问题。改成继承QFrame就可以了。 python class CustomWindow(QFrame):

第二种:设置控件属性

这个问题的根本就是QWidget的背景样式没有启用哦。可以设置控件样式(QWidget.setAttribute())来启用。 python window.setAttribute(Qt.WidgetAttribute.WA_StyledBackground,True)

3.QWidget.setStyleSheet()覆盖之前的样式表

描述

刚才说了,setStyleSheet()方法可以设设置QWidget的样式表。然而,每次设置之后都会覆盖原有的。

解决

解决的方法不是很复杂,可以自己定义一个类,设置一个styleSheets属性(和QWidget原有的styleSheet()方法区分开) 在自己写一个addStyleSheet()方法来维护它。 python class LingmoFrame(QFrame): def __init__(self,parent=None,show=True): super().__init__(parent) self.timer=QTimer() self.timer.timeout.connect(self.updateEvent) self.timer.timeout.connect(self.__update__) self.timer.start(timerDelay) if show: self.show() self.styleSheets={} def __update__(self): self.update() styleSheetString='' for i in self.styleSheets: styleSheetString+=i+': '+self.styleSheets[i]+';' self.setStyleSheet(styleSheetString) def updateEvent(self): pass def addStyleSheet(self,name,style): self.styleSheets[name]=str(style)

这个方法还贴心地将style转换成字符串类型,这样每次数值就不需要强转了。

结束

篇幅有限,最近的问题也没收集多少,所以这篇文章到这里就结束了。 2024年还有两天(算今天)就要过去,2025年就要来了。祝大家元旦快乐!Bye!

Qt Troubleshoot (一)

作者

Admibrill

发布于

2024-12-30

更新于

2024-12-30

许可协议