QObject :: connect:没有这样的插槽mywindow :: changerLargeur(int)

时间:2014-07-28 00:16:46

标签: c++ qt

我读了关于同一问题的其他问题,但无法解决我的问题。当我运行我的代码时,程序启动,发送QObject :: connect:没有这样的插槽mywindow :: changerLargeur(int)然后失败。 谢谢你的帮助

h file

#ifndef MYWINDOW_H
#define MYWINDOW_H
#include <QWidget>
#include <QSlider>
#include <QLCDNumber>

class mywindow : public QWidget
{
    Q_OBJECT
public:
    mywindow();
public slots:
    void changerlargeur(int largeur);

private:
    QSlider *glisseur;
    QLCDNumber *afficheur;    
};

#endif // MYWINDOW_H

cpp文件

#include "mywindow.h"

mywindow::mywindow(): QWidget() 
{
  setFixedSize(200, 100);

  glisseur = new QSlider(Qt::Horizontal,this);
  glisseur->setRange(100,900);
  glisseur->setGeometry(10, 60, 150, 20);
  QObject::connect(glisseur, SIGNAL(valueChanged(int)), this, SLOT(changerLargeur(int)));
  QObject::connect(glisseur, SIGNAL(valueChanged(int)), afficheur, SLOT(display(int)));

  afficheur = new QLCDNumber(this);
  afficheur->setSegmentStyle(QLCDNumber::Flat);
} 

void mywindow::changerlargeur(intlargeur)
{
  setFixedSize(largeur, 100);
}

主档

#include <QApplication>
#include "mywindow.h"


int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  mywindow fenetrep;
  fenetrep.show(); 

  return app.exec(); 
}

1 个答案:

答案 0 :(得分:0)

与C ++中的大多数其他内容一样,Qt的信号和插槽区分大小写。所以这不起作用:

void changerlargeur(int largeur);

VS

SLOT(changerLargeur(int))

你需要决定你是希望L是大写还是小写,并坚持下去。

另一个问题是:

QObject::connect(glisseur, SIGNAL(valueChanged(int)), afficheur, SLOT(display(int)));

afficheur = new QLCDNumber(this);

您无法连接到尚不存在的对象上的插槽。