2012-09-02 60 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

相關問題