Qt之QMainWindow 自定义标题栏

42 篇文章 194 订阅 ¥29.90 ¥99.00

简述

        Qt自带标题栏功能还是很强大的,但是确实不能百分百满足需求,除了丑以外还不能随意更改标题栏字体,也不能更改样式;所以为了满足自己的虚荣心让标题栏变得更加好用看好看,特地花时间做了以下测试;

支持平台

        支持Windows,Linux,Arm,Mac;

效果

优点 

        支持更改标题栏字体,支持自定义按钮状态,支持更改样式,等;

其他

        源码下载(折扣):https://item.taobao.com/item.htm?ft=t&id=727943886541

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QMainWindow标题栏可以通过自定义 QWidget 来实现。具体步骤如下: 1. 创建一个自定义 QWidget,并将其设置为 QMainWindow标题栏,可以使用 QMainWindow 的 setMenuWidget() 方法或者 setCentralWidget() 方法。 2. 在自定义 QWidget 中添加标题、图标和控制按钮。 3. 实现控制按钮的逻辑,例如关闭窗口、最小化窗口和最大化窗口。 以下是一个简单的示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QHBoxLayout, QLabel, QPushButton from PyQt5.QtGui import QIcon from PyQt5.QtCore import Qt class CustomTitleBar(QWidget): def __init__(self, parent=None): super(CustomTitleBar, self).__init__(parent) self.parent = parent self.initUI() def initUI(self): # 设置标题和图标 self.setWindowTitle(self.parent.windowTitle()) self.setWindowIcon(self.parent.windowIcon()) # 创建控制按钮 self.close_btn = QPushButton('×') self.min_btn = QPushButton('-') self.max_btn = QPushButton('□') # 设置按钮大小和颜色 btn_size = 25 self.close_btn.setFixedSize(btn_size, btn_size) self.min_btn.setFixedSize(btn_size, btn_size) self.max_btn.setFixedSize(btn_size, btn_size) self.close_btn.setStyleSheet('QPushButton{background-color:#F76677; color:#FFFFFF;}') self.min_btn.setStyleSheet('QPushButton{background-color:#F7D674; color:#FFFFFF;}') self.max_btn.setStyleSheet('QPushButton{background-color:#6DDF6D; color:#FFFFFF;}') # 添加控制按钮到布局 layout = QHBoxLayout(self) layout.addWidget(QLabel(' ')) layout.addWidget(self.close_btn) layout.addWidget(self.min_btn) layout.addWidget(self.max_btn) layout.setAlignment(Qt.AlignRight) layout.setSpacing(0) layout.setContentsMargins(0, 0, 0, 0) # 设置窗口样式 self.setFixedHeight(30) self.setStyleSheet('background-color:#222222; color:#FFFFFF;') # 为控制按钮添加信号槽 self.close_btn.clicked.connect(self.parent.close) self.min_btn.clicked.connect(self.parent.showMinimized) self.max_btn.clicked.connect(self.max_normal) def max_normal(self): if self.parent.isMaximized(): self.parent.showNormal() self.max_btn.setText('□') else: self.parent.showMaximized() self.max_btn.setText('◻') class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.initUI() def initUI(self): self.setWindowTitle('Custom Title Bar') self.setWindowIcon(QIcon('icon.png')) # 创建主窗口 central_widget = QWidget() self.setCentralWidget(central_widget) # 创建自定义标题栏 title_bar = CustomTitleBar(self) self.setMenuWidget(title_bar) # 设置窗口大小 self.setGeometry(100, 100, 600, 400) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 在这个示例中,我们创建了一个 CustomTitleBar 类来实现自定义标题栏。在 CustomTitleBar 中,我们添加了三个控制按钮和一个标题,使用 QHBoxLayout 来布局控制按钮。我们还实现了关闭窗口、最小化窗口和最大化窗口的逻辑,并将 CustomTitleBar 设置为 QMainWindow标题栏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ilson_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值