gpt4 book ai didi

c++ - 在 Qt 中旋转拨盘后的增量计数?

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:19 26 4
gpt4 key购买 nike

所以基本上我想做的是在 Qt 中使用 Dial 并使用 LCD Number 显示用户旋转它的次数。信号将是当 slider 移动 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() 当然是这样操作的,只要刻度盘移动一个单位,计数就会递增,这显然不是我们想要的。

最佳答案

基本技巧是检测旋转方向。在 dial_incrementer() 中,您需要减去新值和(内存的)先前值。结果数字的符号将为您提供旋转方向。

关于c++ - 在 Qt 中旋转拨盘后的增量计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27217832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com