c++ - QT "No such slot"错误

标签 c++ qt

<分区>

这是我的类定义/.hpp 文件的一部分:

class RenderGraphFrame : public QGLWidget
{
public:
    RenderGraphFrame(QWidget *parent);

private slots:
    void PrevButton();
    void NextButton();

private:
    void draw();
    QWidget *p_parent;
    bool ButtonsInited;
    QPushButton *nextButton;
    QPushButton *prevButton;
}

这是相关的源代码部分:

RenderGraphFrame::RenderGraphFrame(QWidget *parent)
    : QGLWidget(QGLFormat(/*QGL::SampleBuffers*/), parent)
{
    p_parent = parent;
    /* ... */
}


void RenderGraphFrame::draw()
{
    if (ButtonsInited == false)
    {
        bool tmpttest_success;
        nextButton = parent->findChild<QPushButton *>("nextButton", Qt::FindChildrenRecursively);
        prevButton = p_parent->findChild<QPushButton *>("prevButton", Qt::FindChildrenRecursively);
        tmpttest_success = connect(_nextButton, SIGNAL (released()), this, SLOT(NextButton()));

        if (tmptest_success == false)
        {
            //this is what happens but I don't want it to happen...
        }
    }
    /*....*/
}


void RenderGraphFrame::NextButton()
{
    /*somestuff*/
    return;
}

void RenderGraphFrame::PrevButton()
{
    /*somestuff*/
    return;
}

我得到了错误:

QObject::connect: No such slot QGLWidget::NextButton() in ..\Graph\some\path\to.cpp:160
QObject::connect:  (sender name:   'nextButton')

当然没有,因为我不想连接 QGLWidget::NextButton(),因为我想连接 RenderGraphFrame::NextButton()。 我该如何解决这个问题?我已经锁定了所有这些关于“没有这样的插槽”qt 错误的帖子。但它们似乎根本不是由我的其他问题引起的。

那么有什么建议可以解决这个问题吗?

最佳答案

如评论中所述,您必须在类声明中添加 Q_OBJECT 宏。互联网上的许多文档将帮助您理解为什么这是必要的:

关于c++ - QT "No such slot"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31562023/

相关文章:

c++ - 如何在 Qt 应用程序中获取 SD 卡的总空间和已用空间?

c++ - 如何通过取消引用内存中的另一个地址来取消引用内存中的特定地址?

c++ - 使用 SIMD 进行 HOG 优化

c++ - 无法从 QLineEdit 检索文本值

qt - Q渐变椭圆混合

qt - 如何使 QGraphicsEllipsitem 边框透明?

c++ - 在原生 C/C++ 中使用 Qt 绘制二维码

c++ - 不间断地从循环中删除列表中的元素

c++ - 展开 C 或 C++ 源文件中的单个宏

c++ - qt中有QRect的3D类比吗?