如何从QSpinBox中获取整数值更改值?

时间:2017-10-22 23:27:00

标签: c++ qt

在这里,我只是尝试使用intQSpinBox获取已更改的SIGNAL and SLOTS值,因为我需要在另一个函数中使用此int变量。我的意思是,如果用户更改QSpinBox值,则会更改int变量的值。

我知道这个SIGNAL将是SIGNAL(valueChanged(int)),但我对SLOT在这种情况下会是什么感到困惑。我真的在这一点上堆叠了。

修改

我尝试过的是以下内容。 MainWindow.h

#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT

public slots:
    void setFrame(int frame);

MainWindow.cpp正在关注。要检查其工作原理,我尝试在int中显示QLabel

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->spinBox, SIGNAL(valueChanged(int)), this, SLOT(setFrame(int frame)));
}
void MainWindow::setFrame(int frame)
{
    ui->label->setText(QString::number(frame));

}

有人可以解决有关如何从int获取更改的QSpinBox值的问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如文档所述(在this document about QObject Class中):

  

请注意,signal和slots参数不得包含任何变量名称

所以你的错误是在插槽SLOT(setFrame(int frame))中指定变量名称。由于您只能使用变量类型,因此它将改为SLOT(setFrame(int))

无论如何,如果这是连接的唯一目标,我宁愿这样做:

connect(ui->spinBox, SIGNAL(valueChanged(int)), ui->label, SLOT(setNum(int)));

这样,你甚至不需要MainWindow中的方法setFrame,标签已经有办法显示数字而不是字符串。

希望这有帮助!