gpt4 book ai didi

qt - 在 Windows 上 setRange(0, 0) 时将文本放在 QProgressBar 的中间?

转载 作者:行者123 更新时间:2023-12-01 11:35:37 25 4
gpt4 key购买 nike

在 Windows 上使用 setRange(0, 0) 时,如何在 QProgressBar 中间放置文本(不仅仅是数字)?

下面是一个 PyQt 示例,它仍然无法按预期工作。

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class MainWindow(QMainWindow):

def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.resize(800, 600)

# self.lb=QLabel('finding resource ')

self.pb = QProgressBar()
self.pb.setRange(0, 0)

self.pb.setAlignment(Qt.AlignCenter)
self.pb.setFormat('finding resource...')
self.pb.setStyleSheet("text-align: center;")

# self.pb.setTextVisible(False)


self.statusBar().setSizeGripEnabled(False)
# print(self.statusBar().layout() )
self.statusBar().setStyleSheet("QStatusBar::item {border: none;}")
self.statusBar().addPermanentWidget(self.pb, 1)


if __name__ == "__main__":
app = QApplication(sys.argv)

ui = MainWindow()
ui.show()
sys.exit(app.exec_())

最佳答案

vahancho 在他的 answer 中很好地解释了原因并提到要覆盖 QProgressBar.text() .幸运的是,这在 Python 中很简单,而且我知道该怎么做。

from PySide import QtGui, QtCore

class MyProgressBar(QtGui.QProgressBar):
"""
Progress bar in busy mode with text displayed at the center.
"""

def __init__(self):
super().__init__()
self.setRange(0, 0)
self.setAlignment(QtCore.Qt.AlignCenter)
self._text = None

def setText(self, text):
self._text = text

def text(self):
return self._text

app = QtGui.QApplication([])

p = MyProgressBar()
p.setText('finding resource...')
p.show()

app.exec_()



enter image description here

这是在 Windows 7 上。

顺便提一句。首先我想到了蛮力方法: QStackedLayoutQLabelQProgressBar 之上.这也应该始终有效。

关于qt - 在 Windows 上 setRange(0, 0) 时将文本放在 QProgressBar 的中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27564805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com