Ver código fonte

UI: Add SliderAbsoluteSetStyle class

When this class is used in conjunction with a QSlider control, allows
direct setting of the slider handle position when clicking in an area
other than the slider handle.  The default QSlider handle behavior is to
step towards clicked position.
HomeWorld 10 anos atrás
pai
commit
df893dde81

+ 2 - 0
obs/CMakeLists.txt

@@ -114,6 +114,7 @@ set(obs_SOURCES
 	visibility-checkbox.cpp
 	vertical-scroll-area.cpp
 	visibility-item-widget.cpp
+	slider-absoluteset-style.cpp
 	source-list-widget.cpp
 	crash-report.cpp
 	qt-wrappers.cpp)
@@ -148,6 +149,7 @@ set(obs_HEADERS
 	visibility-checkbox.hpp
 	vertical-scroll-area.hpp
 	visibility-item-widget.hpp
+	slider-absoluteset-style.hpp
 	source-list-widget.hpp
 	qt-display.hpp
 	crash-report.hpp

+ 19 - 0
obs/slider-absoluteset-style.cpp

@@ -0,0 +1,19 @@
+#include "slider-absoluteset-style.hpp"
+
+SliderAbsoluteSetStyle::SliderAbsoluteSetStyle(const QString& baseStyle)
+	:QProxyStyle(baseStyle)
+{
+}
+SliderAbsoluteSetStyle::SliderAbsoluteSetStyle(QStyle* baseStyle)
+	:QProxyStyle(baseStyle)
+{
+}
+
+int SliderAbsoluteSetStyle::styleHint(QStyle::StyleHint hint,
+	const QStyleOption* option = 0, const QWidget* widget = 0,
+	QStyleHintReturn* returnData = 0) const
+{
+	if(hint == QStyle::SH_Slider_AbsoluteSetButtons)
+		return (Qt::LeftButton | Qt::MidButton);
+	return QProxyStyle::styleHint(hint, option, widget, returnData);
+}

+ 12 - 0
obs/slider-absoluteset-style.hpp

@@ -0,0 +1,12 @@
+#pragma once
+
+#include <QProxyStyle>
+
+class SliderAbsoluteSetStyle : public QProxyStyle
+{
+public:
+	SliderAbsoluteSetStyle(const QString& baseStyle);
+	SliderAbsoluteSetStyle(QStyle* baseStyle);
+	int styleHint(QStyle::StyleHint hint, const QStyleOption* option,
+		const QWidget* widget, QStyleHintReturn* returnData) const;
+};