在这里,我只是尝试使用int
从QSpinBox
获取已更改的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
值的问题吗?
提前致谢。
答案 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
,标签已经有办法显示数字而不是字符串。
希望这有帮助!