2017-10-17 10 views
1

を使用してQSliderハンドル幅を変更する方法。私が見つけたたくさんスタイルシートでハンドル幅を変更する例が、変更が反映されていないが、私は、コードを実行したとき。私はここにPyQt5 Designerを使用していますのここ。。私は移動しやすくなりますので、QSliderを大きく扱う作るしようとしています私は10" タッチスクリーン上で実行するためにwan'tアプリケーションを持っているスタイルシート

QSlider::groove:horizontal {height: 10px; margin: 0 0;} 
QSlider::handle:horizontal {background-color: black; border: 1px; height: 
40px; width: 40px; margin: 0 0;} 

スライダー用のスタイルシートですメインプログラム:

from Slidertest import Ui_MainWindow 
import sys 
from PyQt5.QtWidgets import QApplication, QMainWindow 

class RPTApp(QMainWindow, Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(RPTApp, self).__init__(parent) 
     self.setupUi(self) 

def main(): 

    app = QApplication(sys.argv) 
    window = RPTApp() 
    window.show() 
    app.exec_()  

if __name__ == '__main__': 
    main() 

スライダーのデザイナーコードは次のとおりです。

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName("MainWindow") 
     MainWindow.resize(640, 480) 
     self.centralwidget = QtWidgets.QWidget(MainWindow) 
     self.centralwidget.setObjectName("centralwidget") 
     self.PS_timeSlider = QtWidgets.QSlider(self.centralwidget) 
     self.PS_timeSlider.setGeometry(QtCore.QRect(100, 100, 371, 50)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, 
QtWidgets.QSizePolicy.Expanding) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.PS_timeSlider.sizePolicy(). 
    hasHeightForWidth()) 
    #needed to add a return and break the line above 
     self.PS_timeSlider.setSizePolicy(sizePolicy) 
     self.PS_timeSlider.setBaseSize(QtCore.QSize(0, 0)) 
     font = QtGui.QFont() 
     font.setPointSize(12) 
     font.setKerning(False) 
     self.PS_timeSlider.setFont(font) 
     self.PS_timeSlider.setFocusPolicy(QtCore.Qt.WheelFocus) 
     self.PS_timeSlider.setContextMenuPolicy(QtCore.Qt.NoContextMenu) 
     self.PS_timeSlider.setToolTip("") 
     self.PS_timeSlider.setStatusTip("") 
     self.PS_timeSlider.setWhatsThis("") 
     self.PS_timeSlider.setAccessibleName("") 
     self.PS_timeSlider.setAccessibleDescription("") 
     self.PS_timeSlider.setStyleSheet("QSlider::groove:horizontal 
{height: 10px; margin: 0 0;}\n" 
"QSlider::handle:horizontal {background-color: black; border: 1px; height: 
40px; width: 40px; margin: 0 0;}\n" 
"") 
     self.PS_timeSlider.setMinimum(0) 
     self.PS_timeSlider.setMaximum(100) 
     self.PS_timeSlider.setSingleStep(1) 
     self.PS_timeSlider.setPageStep(5) 
     self.PS_timeSlider.setProperty("value", 50) 
     self.PS_timeSlider.setSliderPosition(50) 
     self.PS_timeSlider.setTracking(True) 
     self.PS_timeSlider.setOrientation(QtCore.Qt.Horizontal) 
     self.PS_timeSlider.setInvertedAppearance(False) 
     self.PS_timeSlider.setInvertedControls(False) 
     self.PS_timeSlider.setTickPosition(QtWidgets.QSlider.TicksBothSides) 
     self.PS_timeSlider.setTickInterval(1) 
     self.PS_timeSlider.setObjectName("PS_timeSlider") 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.menubar = QtWidgets.QMenuBar(MainWindow) 
     self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 26)) 
     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")) 

私は検索で見つけたものすべてを試しましたが、運がなかった。私はあなたが提供できるどんな助けにも感謝します。

答えて

0

これを機能させるには、溝コンポーネントに境界を設定する必要があることがわかりました。また、溝よりも大きな扱いにするために、負のマージンは、(QtのドキュメントでCustomizing QSliderを参照)は、ハンドルに設定する必要があります。

QSlider::groove:horizontal { 
    border: 1px solid; 
    height: 10px; 
    margin: 0px; 
    } 
QSlider::handle:horizontal { 
    background-color: black; 
    border: 1px solid; 
    height: 40px; 
    width: 40px; 
    margin: -15px 0px; 
    } 

PS:スライダーをレイアウトに追加された場合、それはかもしれません元の寸法に押し戻されないように最小限の高さを設定する必要があります。

+0

ありがとうございます。私は昨日からこれで行方不明になっています。 – Mike

関連する問題