这是我的类定义/.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
类声明中的宏。互联网上的许多文档将帮助您理解为什么这是必要的:
- 什么时候应该使用Q_OBJECT?
- http://doc.qt.io/qt-5/qobject.html#Q_OBJECT
- http://doc.qt.io/qt-5/metaobjects.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)