2

Using Qt 5.2.1

Is it possible to set a QSlider (doesn't matter if it's horizontal or vertical) to read-only that is user cannot change the value of the slider but only use it as an indicator of some sort? I was unable to find anything in the Qt documentation or the Qt Designer.

Example for application: displaying a binary state of some sort in the GUI (in my case is the emergency stop on or off).

4

4 に答える 4

7

私の知る限り、そのような機能はQSlider実装では利用できません。

ただし、から派生する独自のクラスを作成し、 、、、およびをQSlider上書きすることで目的の動作を実装し、プロパティが に設定されている場合にのみそれぞれの親実装を呼び出すことができます。mousePressEventmouseReleaseEventmouseMoveEventkeyPressEventkeyReleaseEventreadOnlyfalse

幸いなことに、そのような実装はすでに で利用可能ですkalarm

于 2015-05-27T15:44:04.570 に答える
2

QProgressBarユーザーはそれを「読み取り専用」であり、「どれだけ実行したかを示す」と認識しているため、おそらく a の方が適しているでしょう。

于 2015-05-27T15:52:06.780 に答える
0

簡単な解決策の 1 つは、すべてのマウス、フォーカス、およびキーボード イベントを消費するイベント フィルターをスライダーにインストールすることです。Qt::NoFocusまた、スライダーにポリシーを持たせる必要があります。このようなイベント フィルタはユニバーサルであり、任意のコントロール ウィジェットで使用できます。

別の方法は、ウィジェットを無効にして、無効なパレットと有効なパレットが同じになるようにスタイルを設定することです。ただし、これは一部のプラットフォーム スタイルでは機能しない可能性があり、コミットする前に実験的な検証が必要になります。

于 2015-05-27T16:44:44.760 に答える