QT "No such slot"错误
QT "No such slot" Error
这是我的类定义/.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 ..Graphsomepathto.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
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- QT "No such slot"错误
- QT 连接 - "No such slot"错误