无法连接QPushButton
Cannot connect QPushButton
本文关键字:QPushButton 连接 更新时间:2023-10-16
如果我试图将按钮与插槽连接,编译器会告诉我:
QObject::connect: No such slot ClassA::..
ClassB继承了ClassA。在ClassB中,我创建了一个按钮,并将其连接到ClassB中的一个函数。
connect(btn, SIGNAL(clicked()), this, SLOT(helloWorld()));
原因是this
是平均A级。我怎么能告诉编译器,不要在ClassA中搜索helloWorld()
,而在ClassB中使用函数helloWorld()
?
//header of classa
class ClassA : public QDialog
{
Q_OBJECT
public:
ClassA(QObject *parent = 0);
};
//header of classb
class ClassB : public ClassA
{
public:
ClassB();
public slots:
void helloWorld();
};
//cpp of classa
ClassA::ClassA(QObject *parent)
{
}
//cpp of classb
ClassB::ClassB()
{
QPushButton *btn = new QPushButton("Click");
connect(btn, SIGNAL(clicked()), this, SLOT(helloWorld()));
QHBoxLayout *l = new QHBoxLayout();
l->addWidget(btn);
setLayout(l);
}
void ClassB::helloWorld()
{
qDebug() << "hello world";
}
ClassB
缺少Q_OBJECT
宏;这意味着,从Qt的元类型系统的角度来看,它与ClassA
是相同的。将Q_OBJECT
添加到ClassB
将解决该问题。
我想Angew已经回答了。
moc工具读取一个C++头文件。如果它找到一个或多个包含Q_OBJECT宏的类声明,它将生成一个C++源文件,其中包含这些类的元对象代码。除其他外,信号和插槽机制、运行时类型信息和动态属性系统都需要元对象代码。
moc生成的C++源文件必须编译并与类的实现链接。
更多信息请点击此处:http://woboq.com/blog/how-qt-signals-slots-work.html
此外,您还应该测试连接的返回(true/false),并在失败时断言。避免很多问题。。。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 在 libcurl 连接池中预创建连接
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- 在两个类之间连接QPushButton
- qt如何连接QPushButton的2D数组并返回位置
- 如何将QObbject(QPushButton)连接到其他类的方法
- 我们可以连接qpushbutton以更改QSlider的值吗?
- 无法连接QPushButton