2014-05-14 22 views
6

Ich bin neu in Qt. Ich versuche ein wirklich einfaches Taschenrechnerprogramm zu implementieren. Ich versuche nur, einen Knopf zu setzen, und wenn er geklickt hat, möchte ich, dass er "Hallo, Welt!" zur nächsten ZeileBearbeiten. Es funktioniert gut, wenn ich nur eine Schaltfläche habe, aber wenn ich die zweite hinzufüge, kompiliert es nicht. Und da ich einen Taschenrechner programmiert habe, brauche ich diese Knöpfe.Qt-Code kompiliert nicht, wenn ich versuche, ein Signal an einen Steckplatz anzuschließen

Hier sind die Fehler:

C:\Users\user\Desktop\Calc\build-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\moc_mainwindow.o:-1: In function `ZN10MainWindow18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv': 
C:\Users\user\Desktop\Calc\build-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\moc_mainwindow.cpp:75: error: undefined reference to `MainWindow::on_pushButton_clicked()' 
C:\Users\user\Desktop\Calc\build-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\moc_mainwindow.cpp:76: error: undefined reference to `MainWindow::on_pushButton_2_clicked()' 

hier ist die MainWindow Methode:

void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) 
{ 
    if (_c == QMetaObject::InvokeMetaMethod) { 
     MainWindow *_t = static_cast<MainWindow *>(_o); 
     switch (_id) { 
     case 0: _t->on_pushButton_clicked(); break; 
     case 1: _t->on_pushButton_2_clicked(); break; 
     case 2: _t->on_pushButton_11_clicked(); break; 
     default: ; 
     } 
    } 
    Q_UNUSED(_a); 
} 

und hier ist, wie ich die Verbindung herzustellen:

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
} 

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


// this is the problematic part 
void MainWindow::on_pushButton_11_clicked() 
{ 
    ui->lineEdit->setText("Hello, World!"); 
} 

Wer weiß, wie dies zu beheben ? Vielen Dank für Ihre Zeit.

Antwort

5

// Dies ist der problematischste Teil

Leere Mainwindow :: on_pushButton_11_clicked()

der Tat.

Sie vermissen die Umsetzung der beiden folgenden Methoden aus:

MainWindow::on_pushButton_clicked() 
{ 
    ui->lineEdit->setText("Hello, World 2!"); 
} 

und

MainWindow::on_pushButton_2_clicked() 
{ 
    ui->lineEdit->setText("Hello, World 3!"); 
} 

Also, es scheint, dass Sie drei Slots haben schließlich statt zwei. Sie müssen die anderen nach Ihrem Wunsch implementieren. Beachten Sie, dass die Texte oberhalb von nur Platzhaltern für alle Aktionen stehen, die Sie planen.

+1

ah, danke! Ich dachte, wenn ich eine alte Verbindung lösche, löscht Qt Creator auch den Code. Anscheinend tut es das nicht. –

+1

@ AtakanArıkan: Ja, wenn Sie sie nicht brauchen, löschen Sie einfach ihre Deklaration in der Kopfzeile und regenerieren die MOC-Datei. – lpapp