所以基本上我想做的是在Qt中使用Dial并显示用户使用LCD Number旋转它的次数。当滑块移动360度时,信号将增加计数器并显示该数字。如果我们定义要通过的阈值,例如359,那么用户可以通过简单地多次通过阈值来滥用它。如果我们只计算表盘已经移动了多少度数,那么用户也可以通过来回移动来滥用它,而无需沿着表盘的整个长度行进。所以我认为让它正常工作的方法是,一旦它们在一个方向上行进360或-360个单位,计数就会增加;如果用户要改变他们的方向,他们的新距离将与他们之前的行进距离抵消,从而允许真正的旋转。这是我到目前为止的代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->connect(this->ui->dial, SIGNAL(sliderMoved(int)), this,SLOT(dial_incrementer()));
this->counter = 0;
this->ui->lcdNumber->display(counter);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::dial_incrementer()
{
counter++;
this->ui->lcdNumber->display(counter);
}
和我的标题:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
int counter;
private slots:
void dial_incrementer();
void on_dial_sliderMoved(int position);
};
#endif // MAINWINDOW_H
不幸的是,我不确定从哪里拿走它; sliderMoved()当然是在操作,所以每当表盘移动一个单位时,计数就会递增,这显然不是我们想要的。
答案 0 :(得分:1)
根本技巧是检测旋转方向。在dial_incrementer()
中,您需要减去新值和(记忆的)先前值。结果数字的符号将为您提供旋转方向。