2011-01-27 6 views
5

基本的に、私は非常に私はOpenGLを学ぶように一緒に私を助けるために簡単なQtアプリを作っている。私が2つのウィンドウを持っているというアイデア
は、GLコンテキスト(GLWidget、QGLWidgetから派生したもの)と、もう1つはプログレスバーとテキスト領域を持つ単純なGUIです。単純なQt Appはシグナル/スロットが追加されたらコンパイルを拒否する

私はコンパイルして実行することができ、すべてが美しいです。私は2つのウィンドウの間に信号とスロットを接続しようとしていました。 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 Creator 2.0.1を使用しています。 32ビットWindows 7 Ultimateを実行しています。

答えて

9

connectはQObjectの静的メンバーです。 QObjectのコンテキストの外で使用すると、次のようなスコープを指定する必要があります。

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

をそれ以外の場合、コンパイラはグローバルスコープ内に存在connect()と呼ばれる別の関数を呼び出すようにしよう、と明らかに、この他の機能は、異なる使用していますパラメーター。

+0

D'oh!私はそれがそれのような何かばかだと思った。どうもありがとう! – rjacks

+0

心配しないで、私もそこにいました;-) – Fred

+0

皆さんはQtとの2回の作業の後に誰もが作ったと思います! – tibur

4

WindowsソケットAPIからconnect関数を使用しようとしています。試してください:

QObject::connect(gl, SIGNAL(fpsReport(float)), mWindow, SLOT(updateFPS(float)); 
関連する問題