Q对象::connect:没有这样的信号(类名)(signalname)(atribure)
QObject::connect: No such signal(classname)(signalname)(atribure)
我有个问题。编译时一切都很好,但槽不起作用。应用程序启动后,输出QObject::connect: No such signal CMatrix::ReadyToDraw(ww)
。我测试过了,插槽DrawFunction()
不起作用。由于分段错误,我无法调试。
页眉.h
class CMatrix:public QObject
{
Q_OBJECT
public:
int **m_pMatrix;
const short int m_size=4;
public:
CMatrix();
bool checkFields();
void setField();
signals:
void ReadyToDraw(CMatrix *ww);
public slots:
void MoveDown();
void MoveTop();
void MoveLeft();
void MoveRight();
};
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void DrawFunction(CMatrix *A);
public:
QPushButton* butTop;
QList<QLabel*> lblList;
};
main.cpp
#include "header.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
CMatrix *ww=new CMatrix;
QObject::connect(w.butTop,SIGNAL(clicked()),ww,SLOT(MoveTop()));
QObject::connect(ww,SIGNAL(ReadyToDraw(ww)),&w,SLOT(DrawFunction(ww)));
w.show();
return a.exec();
}
您的信号签名是
ReadyToDraw(CMatrix *)
不是
ReadyToDraw(ww)
因为connect()需要类型,而不是变量的名称。
所以把你的连接线改成:
QObject::connect(ww,SIGNAL(ReadyToDraw(CMatrix *)),&w,SLOT(DrawFunction(CMatrix *)));
相关文章:
- 有没有一种方法可以在编译时获得作用域类名
- 错误:需要类名(链表c++)
- C++20 概念:如何在"requires"子句中引用类名?
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- 如何在友元函数中使用静态成员而不添加前缀 [类名]::
- 发生注入类名时会发生什么情况?(C++)
- C++包括类名间距和类实例化
- C++ 类名函数()
- 限定的依赖名称查找,其中包含基类的注入类名
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- C++:错误:"{"标记之前的预期类名
- C++,使用类名调用函数
- (结构名/类名)不命名类型C++
- 如何让qDebug编写方法和类名?
- C++方法实现:是否可以避免每次都键入类名?
- 无法<string>从"常量字符 []"转换为<类名>
- 类名后跟括号的类型是什么
- 由于相同的文件名/类名存在于不同的SO中而导致的SEG错误
- Q对象::connect:没有这样的信号(类名)(signalname)(atribure)
- 没有关于升压信号的名为"应用"的类模板2