[英]Qt C++ - Custom slots
我正在嘗試創建一些自定義插槽,但是它抱怨自定義插槽不存在。
我已經用谷歌搜索,但是找不到類似情況。 沒有解決方案對我有用。
QObject::connect: No such slot QSlider::setMinimum(int)
inkpuppet.cpp
#include "inkpuppet.h"
#include "ui_inkpuppet.h"
#include "aboutdialog.h"
#include <QDialog>
#include <QWidget>
#include <QtCore>
#include <QtGui>
#include <QButtonGroup>
#include <QSlider>
InkPuppet::InkPuppet(QWidget *parent) :
QWidget(parent),
ui(new Ui::InkPuppet)
{
ui->setupUi(this);
connect(ui->lowerFrameBox, SIGNAL(valueChanged(int)), ui->timeSlider, SLOT(setMinimum(int)));
connect(ui->upperFrameBox, SIGNAL(valueChanged(int)), ui->timeSlider, SLOT(setMaximum(int)));
//connect(ui->lowerFrameBox, SIGNAL(valueChanged(int)), ui->timeSlider, SLOT(setRange(int,int)));
}
InkPuppet::~InkPuppet()
{
delete ui;
}
void InkPuppet::on_aboutButton_clicked()
{
}
void InkPuppet::setMinimum(int value)
{
ui->timeSlider->setMinimum(value);
}
void InkPuppet::setMaximum(int value)
{
ui->timeSlider->setMaximum(value);
}
inkpuppet.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtCore>
#include <QtGui>
#include "aboutdialog.h"
namespace Ui {
class InkPuppet;
}
class InkPuppet : public QWidget
{
Q_OBJECT
public:
explicit InkPuppet(QWidget *parent = 0);
~InkPuppet();
public slots:
void on_aboutButton_clicked();
void setMinimum(int value);
void setMaximum(int value);
private:
Ui::InkPuppet *ui;
AboutDialog *aDialog;
};
#endif // WIDGET_H
您嘗試將ui->lowerFrameBox
valueChanged(int)
信號與ui->timeSlider
的setMinimum插槽ui->timeSlider
。 但是,setMinimum沒有插槽。 您需要連接到InkPuppet中的插槽。
connect(ui->lowerFrameBox, SIGNAL(valueChanged(int)),
this, SLOT(setMinimum(int)));
在Qt 5.1中,您也可以通過以下方式使用connect:
connect(ui->upperFrameBox,&QSlider::valueChanged,this,&InkPuppet::setMaximum);
connect(ui->upperFrameBox,&QSlider::valueChanged,&InkPuppet::setMaximum);
甚至您也可以使用c ++ 11 lambda功能。
connect(ui->upperFrameBox,&QSlider::textChanged,
[&](int value) {ui->timeSlider->setMaximum(value);});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.