2017-10-17 2 views
1

Ich habe eine Anwendung, die ich auf einem 10 "Touchscreen ausführen würde. Ich versuche, den QSlider Griff größer zu machen, so dass es einfacher zu bewegen ist. Ich habe viel gefunden Beispiele für die Griffbreite im Stylesheet ändern, die Änderungen werden jedoch nicht berücksichtigt werden, wenn ich den Code ausführen. ich bin mit PyQt5 Designern und hier ist das Stylesheet für den Schieber.Wie ändere ich QSlider Griff Breite mit Stylesheet

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

hier ist die Hauptprogramm:

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() 

Hier ist der Designer-Code für den Schieber:

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")) 

Ich habe alles versucht, was ich in meinen Suchen fand, aber hatte kein Glück gehabt. Ich würde jede Hilfe schätzen, die Sie zur Verfügung stellen können.

Antwort

0

Um dies zu arbeiten, habe ich festgestellt, dass eine Grenze auf der Nut-Komponente festgelegt werden muss. Auch, um die größer ist als die Nut handhaben zu machen, hat eine negative Marge auf dem Handgriff eingestellt werden (siehe Customizing QSlider in der Qt-Docs):

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: Wenn der Schieber in einem Layout hinzugefügt wird, könnte es notwendig sein, um seine minimale Höhe einzustellen, um zu verhindern, dass sie wieder auf ihre ursprünglichen Abmessungen zusammengedrückt wird.

+0

Vielen Dank. Ich habe seit gestern damit vermisst. – Mike

Verwandte Themen