3

WindowsでPython 2.7でPyQt4を使用していますが、音楽プレーヤーの場合Phonon.SeekSliderQDial.
私の問題は、 a の最小値QDialが常にダイヤルの下部にありますが、上部にあることです (値はまだ時計回りに増加しています)。setInvertedAppearance()とを試しsetInvertedControls()ましたが、ダイヤルが水平に反転するだけで、setOrientation()どちらも役に立ちませんでした。
私の質問: 角度を指定してダイヤルの最小値を配置するか、ダイヤル全体を垂直に反転する方法はありますか?

4

3 に答える 3

4

これを直接行う方法はないと思います。ただし、 を に配置しQDialQGraphicsView、シーン内のアイテムとして回転させることはできます。このようなものが動作するはずです:

import sys
from PyQt4 import QtGui, QtCore

class RotatableView(QtGui.QGraphicsView):
    def __init__(self, item, rotation=0):
        QtGui.QGraphicsView.__init__(self)
        scene = QtGui.QGraphicsScene(self)
        self.setScene(scene)
        graphics_item = scene.addWidget(item)
        graphics_item.rotate(rotation)

        # make the QGraphicsView invisible
        self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.setFixedHeight(item.height())
        self.setFixedWidth(item.width())
        self.setStyleSheet("border: 0px")

class DialExample(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        dial = QtGui.QDial()
        dial.setNotchesVisible(True)
        label = QtGui.QLabel('0')
        dial.valueChanged.connect(label.setNum)

        layout = QtGui.QVBoxLayout()
        layout.addWidget(RotatableView(dial, 180))
        layout.addWidget(label)
        self.setLayout(layout)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    dialexample = DialExample()
    dialexample.show()
    sys.exit(app.exec_())
于 2013-08-30T22:55:15.417 に答える