2012-09-02 59 views
0

我正在试图制作一个简单的程序来计算2个数字并在Qt中给出一个标签的总和。 但我得到一个错误,我不知道我做错了什么。无法将参数4从'void'转换为'const char *'

我得到这个错误:

K:\QtSDK\QT_files\les4-build-desktop-Qt_4_8_1_for_Desktop_- _MSVC2010__Qt_SDK__Debug\..\les4\calcu.cpp:40: error: C2664: 'bool QObject::connect(const  QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)' : cannot convert  parameter 4 from 'void' to 'const char *' 
Expressions of type void cannot be converted to other types 

所以basicly我做一个连接时,在第一文本编辑的值更改它会去bereken功能,也将得到textedits的2个值,并计算他们。

Calcu.h

#ifndef CALCU_H 
#define CALCU_H 

#include <QWidget> 
#include <QLineEdit> 
#include <QLabel> 

namespace Ui { 
class calcu; 
} 

class calcu : public QWidget 
{ 
Q_OBJECT 

public: 
explicit calcu(QWidget *parent = 0); 
~calcu(); 
public slots: 
void bereken(void); 


private: 
Ui::calcu *ui; 
QLineEdit *number1 ; 
QLineEdit *number2 ; 
QLabel *sum; 
}; 

#endif // CALCU_H 

calcu.ccp

#include "calcu.h" 
#include "ui_calcu.h" 
#include <QLineEdit> 
#include <QLabel> 
#include <QHBoxLayout> 
#include <QMessageBox> 
#include <QString> 

calcu::calcu(QWidget *parent) : 
QWidget(parent), 
ui(new Ui::calcu) 
{ 
ui->setupUi(this); 

QGridLayout *grid = new QGridLayout; 

number1 = new QLineEdit; 
number2 = new QLineEdit; 
QLabel *sign = new QLabel("+"); 
QLabel *equal = new QLabel("="); 
sum = new QLabel; 

QHBoxLayout *layout = new QHBoxLayout; 

layout->addWidget(number1); 
layout->addWidget(sign); 
layout->addWidget(number2); 
layout->addWidget(equal); 
layout->addWidget(sum); 

    // this->setLayout(layout); 
ui->groupBox->setLayout(layout); 
ui->groupBox->setTitle("Enter som"); 

setWindowTitle(tr("Group Boxes")); 
    // resize(480, 320); 

setLayout(grid); 

QObject::connect(number1, SIGNAL(textChanged(QString)),this,bereken()); 

    // bereken(); 

} 

calcu::~calcu() 
{ 
delete ui; 
} 

void calcu::bereken(){ 

int som; 
QString number; 
number = number1->text(); 
som = number.toInt(); 

number = number2->text(); 
som = som + number.toInt(); 


sum->setText(QString::number(som)); 
} 
+0

http://sscce.org/ – 2012-09-02 10:14:34

回答

3

我想你想的路线:

QObject::connect(number1, SIGNAL(textChanged(QString)),this,bereken()); 

是:

QObject::connect(number1, SIGNAL(textChanged(QString)),this, SLOT(bereken())); 

插槽宏返回为const char *。

0

好像SIGNAL返回void,太行

QObject::connect(number1, SIGNAL(textChanged(QString)),this,bereken()); 

是错误的使用这个功能。

+0

哦,我有我的错误。我忘了添加SLOT – Sharpless

相关问题