Qt在MainWindow对象成员中连接SIGNAL和SLOT
Qt Connecting SIGNAL and SLOT in object member of MainWindow
我有一个类MyClass:
- private:
pushButton *button;
void connectSignalAndSlot();
- private slot:
void buttonAction();
我想连接这些在MyClass使用connectSignalAndSlot(),像这样:
void MyClass::connectSignalAndSlot()
{
QObject::connect(button,SIGNAL(clicked()),this,SLOT(buttonAction()));
}
这给了我一个错误
no matching function for call to 'QObject::connect(QPushButton*&, const char*, MyClass* const, const char*)';
如果我用MyClass继承QObject,程序将编译并启动,但随后在我的应用程序输出窗格中显示以下问题:
QObject::connect: No such slot QObject::buttonAction() in ..MyProjectmyclass.cpp:48
我必须使按钮和插槽公共,并在MainWindow类中使用它们吗?是否没有办法将其保持在MyClass级别?
谢谢你的帮助!
您必须从QObject
继承MyClass
并在MyClass
定义(头文件)中添加Q_OBJECT
宏以使插槽/信号工作。
class MyClass : public QObject
{
Q_OBJECT
public:
....
};
继承QObject
是正确的方式,但您仍然缺少qt -元对象代码。类的头文件应该像这样:
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass : public QObject {
Q_OBJECT
// your methods, variables, slots and signals
}
#endif
不要忘记创建moc文件,最简单的方法是使用qmake
或QtCreator
IDE。
相关文章:
- 当套接字连接断开时检测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
- libcurl 和 DNS ttl 中的内部连接管理
- 如何应用 libcurl 的持久连接选项
- connect(QObject*, SIGNAL(signal()), functor) 在 qt5 中未连接
- 如何将 boost::signal2::signal 连接到纯虚函数
- Qt在MainWindow对象成员中连接SIGNAL和SLOT