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

推荐订阅源

月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
IT之家
IT之家
Cyberwarzone
Cyberwarzone
T
Troy Hunt's Blog
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
T
Threat Research - Cisco Blogs
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
G
GRAHAM CLULEY
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 叶小钗
Last Week in AI
Last Week in AI
C
CERT Recently Published Vulnerability Notes
The Hacker News
The Hacker News
Jina AI
Jina AI
T
Tor Project blog
V
Vulnerabilities – Threatpost
酷 壳 – CoolShell
酷 壳 – CoolShell
Spread Privacy
Spread Privacy
博客园_首页
C
Cybersecurity and Infrastructure Security Agency CISA
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Simon Willison's Weblog
Simon Willison's Weblog
Security Latest
Security Latest
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 司徒正美
V2EX - 技术
V2EX - 技术
I
Intezer
The Cloudflare Blog
Cisco Talos Blog
Cisco Talos Blog
SecWiki News
SecWiki News
博客园 - 【当耐特】
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Google Online Security Blog
Google Online Security Blog
量子位
The Last Watchdog
The Last Watchdog
AI
AI
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security Affairs
P
Palo Alto Networks Blog
S
Secure Thoughts
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Attack and Defense Labs
Attack and Defense Labs

埃氮幂の命名空间

埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间 埃氮幂の命名空间
埃氮幂の命名空间
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!