【问题标题】:QT "No such slot" Error [duplicate]QT“没有这样的插槽”错误[重复]
【发布时间】:2015-07-22 11:38:29
【问题描述】:

这是我的类定义/.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 添加到您的RenderGraphFrame 课程中。完成后运行 qmake。
  • 嗯.... 修复了它。从来没有听说过(但我是qt的新手)。使用 QT 时是否有任何类必须包含它?
  • 不是任何类,但如果你使用特定的 Qt 特性,比如 slot 或 QVariant,你必须添加它
  • @Viktor 这是误导。 QVariant 不在任何地方输入图片。这真的很简单:任何从QObject 派生的类都必须在类定义的第一行包含Q_OBJECT 宏。 没什么。字面意思就是这么简单。围绕这个简单主题的困惑令人难以置信。

标签: c++ qt


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多