这是我的类定义/ .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')
Ofcouse没有,因为我不想连接QGLWidget::NextButton()
,因为我想连接RenderGraphFrame::NextButton()
。
我怎么能解决这个问题?我已经把这些关于“没有这样的插槽”qt错误的帖子锁定了。但他们似乎完全是由我的其他问题造成的。
所以有任何建议如何解决这个问题?
答案 0 :(得分:3)
如评论中所述,您必须在类声明中添加Q_OBJECT
宏。互联网上的许多文档将帮助您理解为什么这是必要的: