gpt4 book ai didi

qt - 添加信号/插槽后,简单的 Qt 应用程序拒绝编译

转载 作者:行者123 更新时间:2023-12-04 16:49:15 24 4
gpt4 key购买 nike

所以基本上,我正在制作一个非常简单的 Qt 应用程序来帮助我学习 OpenGL。想法
是我有两个窗口,一个是 GL 上下文(GLWidget,源自 QGLWidget),另一个是带有几个进度条和一个文本区域的简单 GUI。

我可以编译和运行应用程序,一切都很美好,直到我尝试在两个窗口之间连接信号和插槽。我已经通读了 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。

最佳答案

connect 是 QObject 的静态成员。在 QObject 上下文之外使用时,您需要指定范围:

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

否则,编译器会尝试调用另一个名为 connect() 的函数。它驻留在全局范围内,显然,这个其他函数使用不同的参数。

关于qt - 添加信号/插槽后,简单的 Qt 应用程序拒绝编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4820958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com