• qt 状态栏QStatusBar的使用及addPermanentWidget、addWidget、setStatusTip、showMessage显示的区别


    需求场景:

      需求在Qt窗口中增加版本信息。

    思路:

      使用Qt 主窗口的 QMainWindow 的 QStatusBar 应该可以满足显示版本信息的需求了。
    在这里插入图片描述

    1. 在主窗口中,实例化QStatusBar对象
    2. 实例化一个QLabel对象,用来显示软件版本信息
    3. QLabel添加到QStatusBar对象中
    4. 将实例化的QStatusBar对象设置为当前窗口的状态栏

    核心代码:

    self.statusBar = QStatusBar(self)
    info = QLabel(self)
    info.setText('V1.0.1')
    info.setAlignment(Qt.AlignLeft)
    self.statusBar.addPermanentWidget(info,1)
    self.setStatusBar(self.statusBar)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    补充说明:

    • addPermanentWidget:在状态栏中永久添加给定的窗口小控件。如果使用了self.statusBar.addPermanentWidget(info, 1),再使用showMessagesetStatusTip时,showMessagesetStatusTip指定的显示内容将不会显示。
      在这里插入图片描述

    • addWidget:在状态栏中添加给定的窗口小控件。使用该方法添加控件后,再使用showMessagesetStatusTip时,showMessagesetStatusTip指定的显示内容将会覆盖控件中的内容。如果addWidgetshowMessagesetStatusTip同时使用会出现三种信息同时显示:
      在这里插入图片描述

    • showMessage:在状态栏中显示一条临时信息,指定显示时长
      在这里插入图片描述

    • setStatusTip:当鼠标移动到widget上时,在状态栏中显示的提示信息。
      在这里插入图片描述

    可以使用下面的测试示例代码体验一下几个方法的关系。

    # -*- coding:UTF-8 -*-
    
    """
     @ProjectName  : 
     @FileName     : 
     @Description: 
     @Time         : 2022/11/09 11:21
     @Author       : Qredsun
     """
    import sys
    
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QLabel
    from PyQt5.QtWidgets import QStatusBar
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(390, 128)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 390, 23))
            self.menubar.setObjectName("menubar")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    
    
    class MainWin(QtWidgets.QMainWindow, Ui_MainWindow):
        def __init__(self):
            super(MainWin, self).__init__()
            self.setupUi(self)
    
            self._init_status_bar()
    
    
        def _init_status_bar(self):
            # 状态栏显示软件版本
            self.statusBar = QStatusBar(self)
            
            font = QtGui.QFont()
            font.setPointSize(14)
            
            info = QLabel(self)
            info.setFont(font)
            info.setText('

    V1.0.1

    '
    ) info.setAlignment(Qt.AlignLeft) self.statusBar.addPermanentWidget(info, 1) info = QLabel(self) info.setFont(font) info.setText('

    V12121

    '
    ) self.statusBar.addWidget(info, 1) self.setStatusBar(self.statusBar) self.statusBar.setStatusTip('StatusTip') self.statusBar.setToolTip('ToolTip') if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) win = MainWin() win.show() sys.exit(app.exec_())
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
  • 相关阅读:
    Java调用tess4j完成 OCR 文字识别
    Skywalking APM监控系列(一丶.NET5.0+接入Skywalking监听)
    SpringMVC中文乱码(request或response)前后端处理
    Java核心编程(23)
    HJ3 明明的随机数
    自然语言处理(NLP)技术介绍
    再获5G RedCap能力认证!宏电5G RedCap工业智能网关通过中国联通5G物联网OPENLAB开放实验室测试验证
    Qt的简单应用:翻金币游戏( 含源码 )
    数据科学的定义、简史和主要工作流程
    Python——错误和异常
  • 原文地址:https://blog.csdn.net/qq_17328759/article/details/127771304