Обычно вы делаете:
connect(ui->horizontalSlider, &QSlider::valueChanged,
ui->horizontalSlider, &QSlider::setValue);
, но ваша логика неверна, потому что вы соединяете valueChanged с setValue , что приведет к сбою вашего приложения, так как произойдет переполнение ...
С другой стороны, подключение используется только для передачи сигналов и слотов, вы не можете выполнять математику в сигналах / функциях, связанных с этим, по крайней мере, не так ... вам понадобится лямбда или что-то подобное в середине
Это написан на mono / Gtk # и его основной платформой является GNU / Linux. Однако он должен работать без проблем на любой платформе, на которой работает mono и Gtk #. Основные особенности s довольно легко адаптировать к любому языку с помощью основных триггерных функций. Обратите внимание, что большинство языков будут использовать радиан для угла в триггерных функциях, поэтому вместо того, чтобы циклически проходить через 0..360 градусов, вы циклически меняете 0..2PI радиан.
Вот моя реализация на C #:
public static PointF PointOnCircle(float radius, float angleInDegrees, PointF origin)
{
// Convert from degrees to radians via multiplication by PI/180
float x = (float)(radius * Math.Cos(angleInDegrees * Math.PI / 180F)) + origin.X;
float y = (float)(radius * Math.Sin(angleInDegrees * Math.PI / 180F)) + origin.Y;
return new PointF(x, y);
}
Кому нужен триг, когда у вас есть комплексные числа :
#include <complex.h>
#include <math.h>
#define PI 3.14159265358979323846
typedef complex double Point;
Point point_on_circle ( double radius, double angle_in_degrees, Point centre )
{
return centre + radius * cexp ( PI * I * ( angle_in_degrees / 180.0 ) );
}