2017-10-17 27 views
1

10 인치 터치 스크린에서 실행할 수없는 응용 프로그램이 있습니다. QSlider 핸들을 더 크게 조정하여 이동하기가 쉽습니다. 스타일 시트에 핸들 폭을 변경하는 예는 있지만, 변경 사항이 반영되지 않습니다을 나는 코드를 실행하면. 내가 여기 PyQt5 디자이너를 사용하고 오전 여기.스타일 시트를 사용하여 QSlider 핸들 너비를 변경하는 방법

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 참조)에 설정되어야한다 : 슬라이더 레이아웃에 추가되면, 그 수도 : PS는

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; 
    } 

그것이 원래의 크기로 다시 움츠려 들지 않도록하기 위해 최소한의 높이를 설정해야합니다.

+0

감사합니다. 나는 어제부터 이걸 놓쳤다. – Mike