簡體   English   中英

Qt C ++-自定義插槽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM