2011-01-27 10 views
5

तो मूल रूप से, मैं बहुत सरल क्यूटी ऐप बना रहा हूं ताकि मैं ओपनजीएल सीख सकूं। विचार
यह है कि मेरे पास दो खिड़कियां हैं, एक जीएल संदर्भ (जीएलविड्ज, क्यूजीएल विजिट से व्युत्पन्न) है और दूसरा कुछ प्रगति सलाखों और एक टेक्स्ट एरिया के साथ एक साधारण जीयूआई है।सिग्नल/स्लॉट जोड़ा जाने के बाद सरल क्यूटी ऐप संकलित करने से इंकार कर देता है

मैं ऐप को संकलित और चलाने के लिए प्राप्त कर सकता हूं, और सबकुछ सुंदर है जब तक कि मैंने दो खिड़कियों के बीच संकेतों और स्लॉट को जोड़ने की कोशिश नहीं की। मैंने QGLWidget पर दस्तावेज़ों, सिग्नल और स्लॉट पर आधिकारिक ट्यूटोरियल और int connect() के लिए प्रलेखन के माध्यम से पढ़ा है।

इसे समझने के लिए: मेरे main.cpp फ़ाइल:

#include <QApplication> 
#include <QObject> 

#include "glwidget.h" 
#include "mainwindow.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    MainWindow *mWindow = new MainWindow(); 
    GLWidget *gl = new GLWidget(); 

    //If this line is commented out, the program compiles and runs 
    connect(gl, SIGNAL(fpsReport(float)), mWindow, SLOT(updateFPS(float)); 

    mWindow->show(); 
    gl->show(); 

    return app.exec(); 
} 

विशिष्ट संकलक त्रुटियों मैं हो रही हैं:

In function 'int qMain(int, char**)':
invalid conversion from 'GLWidget*' to 'SOCKET'
cannot convert 'const char*' to 'const sockaddr*' for argument '2' to 'int
connect(SOCKET, const sockaddr*, int)'

यह सुनिश्चित नहीं है कि यह प्रासंगिक है, लेकिन मैं Qt 4.7.0 (32 बिट) के आधार पर Qt निर्माता 2.0.1 का उपयोग कर रहा हूं। 32-बिट विंडोज 7 अल्टीमेट चल रहा है।

उत्तर

9

कनेक्ट QObject का एक स्थिर सदस्य है। जब एक QObject संदर्भ के बाहर इस्तेमाल किया है, तो आप इस तरह के रूप गुंजाइश निर्दिष्ट करना होगा:

QObject::connect(gl, SIGNAL(fpsReport(float)), mWindow, SLOT(updateFPS(float)); 

अन्यथा, संकलक एक और समारोह connect() जो वैश्विक क्षेत्र में रहता है, और स्पष्ट रूप से कहा जाता है कॉल करने के लिए कोशिश करता है, यह अन्य समारोह विभिन्न का उपयोग करता है मापदंडों।

+0

डी ओह! मैंने सोचा कि यह कुछ गूंगा था। आपका बहुत बहुत धन्यवाद! – rjacks

+0

चिंता न करें, मैं भी वहां गया हूं ;-) – Fred

+0

मुझे लगता है कि सभी ने क्यूटी के साथ कुछ काम करने के बाद इसे बनाया है! – tibur

4

आप विंडोज सॉकेट एपीआई से कनेक्ट फ़ंक्शन का उपयोग करने का प्रयास कर रहे हैं। आज़माएं:

QObject::connect(gl, SIGNAL(fpsReport(float)), mWindow, SLOT(updateFPS(float)); 
संबंधित मुद्दे

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