Qt第四十九章:手写窗口(一、基本模板)

本文介绍了一种在Qt中不依赖Qtdesigner的手写窗口实现方法,通过自定义QWidget作为背景并添加按钮等控件,同时展示了如何加载QSS样式文件来美化界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、基本UI类

二、基本逻辑类

三、QSS

四、预览 


手写窗口是每个Qt程序员的最终归宿。可不能像新手一样一直使用Qt designer去设计窗口。这里我说一下手写窗口的流程:基本思想是忽略Qt本身的自带背景,在其基础上添加一个QWidget作为窗口的背景板,后面所有的UI控件都在这个背景板上搞

一、基本UI类

from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import QWidget, QVBoxLayout, QApplication, QPushButton


class UiTurnWidget(object):
    def setup_ui(self, parent: QWidget):
        # 加载QSS文件
        with open("./turn_widget.css", "r", encoding="UTF-8") as f:
            parent.setStyleSheet(f.read())
        # 设置窗口初始大小 TODO
        parent.resize(500, 300)
        # 设置窗口标题 TODO
        parent.setWindowTitle("测试页面")
        # 设置窗口图标 TODO
        parent.setWindowIcon(QPixmap(":/message/icons/success-fill-32.png"))
        # 设置水平布局
        root_layout = QVBoxLayout()
        parent.setLayout(root_layout)
        # 去掉边距
        root_layout.setContentsMargins(0, 0, 0, 0)
        # 创建背景板
        self.bg_widget = QWidget(parent)
        self.bg_widget.setObjectName('bg_widget')
        root_layout.addWidget(self.bg_widget)
        """
        设计UI TODO
        """
        # 1.背景板垂直布局
        self.bg_layout = QVBoxLayout()
        self.bg_widget.setLayout(self.bg_layout)
        # 2.放置两个控件
        self.bg_layout.addWidget(QPushButton("OK"))
        self.bg_layout.addWidget(QPushButton("Cancel"))

二、基本逻辑类

class TurnWidget(QWidget, UiTurnWidget):
    def __init__(self, parent=None):
        super(TurnWidget, self).__init__(parent=parent)
        self.setup_ui(self)
        """
        逻辑 TODO
        """

三、QSS

QWidget#bg_widget {
    background-color: #1296db;
}

四、预览 

if __name__ == '__main__':
    app = QApplication([])
    widget = TurnWidget()
    widget.show()
    app.exec()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文子阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值