我有一些不寻常的问题: 为了显示打包进度,我想一下qprogressbar在一个栏中有两个值 - 一个显示字节读取,另一个显示写出字节,这也给出了压缩比的想象。
QT4可以吗?
另外,我对C ++编码的经验很少,我目前的工作是基于Python,PyQT4,
答案 0 :(得分:1)
是的,但是你必须实现自己的" DualValueProgressbar"这里有一个例子,不是完整的生产代码,但它会指向你正确的方向。
继续之前的说明:
您是否可以在栏中显示两个值,但在同一个栏中显示两种颜色是完全不同的事情。因此,我建议您使用两个prograssbar来做你想做的事情,保持简单。
在看到任何代码之前,让我解释一下我做了什么。
QProgressBar
self.__value_1
的变量成员。这将是第二个值。paintEvent
,以便在栏内绘制self.__value_1
。Recomendations:
format
属性的代码。结果如下:
以下是代码:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class DualValueProgressBar(QProgressBar):
def __init__(self, parent=None):
super(DualValueProgressBar, self).__init__(parent)
# The other value you want to show
self.__value_1 = 0
def paintEvent(self, event):
# Paint the parent.
super(DualValueProgressBar, self).paintEvent(event)
# In the future versions if your custom object you
# should use this to set the position of the value_1
# in the progressbar, right now I'm not using it.
aligment = self.alignment()
geometry = self.rect() # You use this to set the position of the text.
# Start to paint.
qp = QPainter()
qp.begin(self)
qp.drawText(geometry.center().x() + 20, geometry.center().y() + qp.fontMetrics().height()/2.0, "{0}%".format(str(self.value1)))
qp.end()
@property
def value1(self):
return self.__value_1
@pyqtSlot("int")
def setValue1(self, value):
self.__value_1 = value
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = QWidget()
hlayout = QHBoxLayout(window)
dpb = DualValueProgressBar(window)
dpb.setAlignment(Qt.AlignHCenter)
# This two lines are important.
dpb.setValue(20)
dpb.setValue1(10) # Look you can set another value.
hlayout.addWidget(dpb)
window.setLayout(hlayout)
window.show()
sys.exit(app.exec())
最后是代码示例: