QT5中如何设置让窗口根据屏幕比例显示设置?
python
desktop = QDesktopWidget().screenGeometry()
self.resize(int(desktop.width() * 0.3), int(desktop.height()*0.5))
QT5中关于背景穿透问题的处理方式?
场景如下:我们在开发的时候,通常会给窗口一个主题背景色或者图片。但是由于QT的组件具有继承关系,就会出现最底层的主窗口背景会在所有的后续子组件中显示。这很明显不是我们想要的。
目前我的处理方式是每个组件添加透明色来解决,主题色统一的问题:
python
self.name_txt.setStyleSheet("background:transparent;")
如果你有更好的解决方案,欢迎留言交流。
QT5中信号的使用?
在QT开发中,这是一个很常用的场景。
适用信号通讯一般需要定义信号、接收信号、发送信号这几步:
定义信号:
python
receive_main_msg = pyqtSignal(dict)
接收信号:通常都是在你定义的接收函数里边
python
# 给信号对象绑定一个接收方法
self.receive_main_msg.connect(self.receiveMainData)
发送信号:QT中的发送信号其实就是在其他引用对象中调用信号对象发送。我都不知道这个跟直接掉方法有啥区别。我感觉是没区别。
python
self.pro.receive_main_msg.emit(msg)
QT中子线程的使用?
这个使用也是挺重要的。不然你在处理数据时如果是阻塞的话,窗口肯定会卡的不要不要的。创立线程的方式也很简单:
python
self.backthred = BackendTask(self)
# 设置为守护线程,主线程关闭守护线程也会跟着关闭
self.backthred.daemon = True
self.backthred.start()
# 创建线程
class BackendTask(QThread):
def __init__(self,main):
super().__init__()
def run(self):
# 根据业务决定是否要让线程一直存在
while True:
try:
# 业务
except Exception as e:
print(f"backend task thread err {e}")
先到这里吧,后面有了会继续更新。