0

Qt Designer で GUI を作成し、タブ ウィジェット内のグリッド レイアウト内に水平スライダーを配置しました。GUI.py ファイルのコードは次のとおりです。

self.horizontalSlider = QtGui.QSlider(self.tab)
self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSlider.setObjectName(_fromUtf8("horizontalSlider"))
self.horizontalSlider.setRange(0.1,0.4)
self.horizontalSlider.setValue(0.4)
self.horizontalSlider.setTickInterval(0.05)
self.gridLayout_4.addWidget(self.horizontalSlider, 3, 1, 1, 1)

メイン コードでリリース シグナルの接続を設定しました。

self.horizontalSlider.sliderReleased.connect(self.SmoothSelected)

実行時に、スライダーは開始位置にとどまり、移動できません。私はその価値を次のようにテストしました:

 print(self.horizontalSlider.value())

しかし、値を設定したので、「0.4」ではなく「0」を取得します。タブ内の他のウィジェットは正常に動作します。有効にするなどの簡単なことを忘れましたか?

4

1 に答える 1

4

ドキュメントの状態:

スライダーは、制限された値を制御するための古典的なウィジェットです。これにより、ユーザーは水平または垂直の溝に沿ってスライダー ハンドルを移動し、ハンドルの位置を有効な範囲内の整数値に変換できます。

したがって、setRangesetValueintのみを引数としてsetTickInterval受け入れます。つまり、スライダはint値でのみ移動できます。

QSlider回避策は、 int 値を .01 (または他の値) に乗算してint 値を float に変換するか、この gistQDoubleSliderのような独自のものを実装することです。

于 2017-08-16T11:20:47.193 に答える