2014-05-14 6 views
6

से कनेक्ट करने का प्रयास करता हूं तो मैं Qt के लिए नया हूं। मैं वास्तव में एक सरल कैलकुलेटर कार्यक्रम को लागू करने की कोशिश कर रहा हूं। बस एक बटन डालने की कोशिश कर रहा है, और जब इसे क्लिक किया गया, तो मैं इसे "हैलो, वर्ल्ड!" प्रिंट करना चाहता हूं। अगली पंक्ति में संपादित करें। यह ठीक काम कर रहा है जब मेरे पास केवल एक बटन है, लेकिन जब मैं दूसरा जोड़ता हूं, तो यह संकलित नहीं होता है। और चूंकि मैं एक कैलकुलेटर कोडिंग कर रहा हूं, मुझे उन बटनों की आवश्यकता होगी।क्यूटी कोड संकलित नहीं होता है जब मैं एक सिग्नल को एक स्लॉट

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()' 
यहाँ

MainWindow विधि है:

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); 
} 

और यहाँ कैसे मैं कनेक्शन बनाने है:

#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!"); 
} 

किसी को भी पता है कि यह कैसे तय करने के लिए

यहाँ त्रुटियाँ हैं ? आपके समय के लिए शुक्रिया।

उत्तर

5

// इस समस्याग्रस्त हिस्सा है

शून्य MainWindow :: on_pushButton_11_clicked()

दरअसल।

आप निम्न दो विधियों के कार्यान्वयन ले पा रहे हैं:

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

और

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

तो, ऐसा लगता है कि आप अंत में दो के बजाय तीन स्थान नहीं हैं। आपको अपनी इच्छा के अनुसार दूसरों को लागू करने की आवश्यकता होगी। ध्यान दें कि ग्रंथ केवल प्लेसहोल्डर से ऊपर हैं जो आप जो भी कार्य करने की योजना बना रहे हैं उसके लिए।

+1

आह, धन्यवाद! मैंने सोचा कि जब मैं एक पुराना कनेक्शन हटाता हूं तो क्यूटी निर्माता भी कोड से हटा देता है। जाहिर है यह नहीं है। –

+1

@ AtakanArıkan: हाँ, अगर आपको उनकी आवश्यकता नहीं है, तो शीर्षलेख में उनकी घोषणा हटाएं, और moc फ़ाइल को पुन: उत्पन्न करें। – lpapp

संबंधित मुद्दे