运行时可用信号列表
List of available signals at runtime
我需要在运行时从特定的QWidget获取可用信号的列表。
例如,QWidget是QPushButton,我想得到这个列表:
"clicked()"
"pressed()"
"released()"
"toggled()"
"destroyed()"
...
你能给我一个提示如何做到这一点吗?谢谢
这是获取继承树中所有信号的代码。如果您不需要所有这些需求,则很容易适应您的需求:
主.cpp
#include <QStringList>
#include <QApplication>
#include <QPushButton>
#include <QMetaObject>
#include <QMetaMethod>
#include <QDebug>
int main(int argc, char **argv)
{
QApplication application(argc, argv);
QPushButton pushButton;
const QMetaObject* metaObject = pushButton.metaObject();
do {
for (int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i) {
QMetaMethod metaMethod = metaObject->method(i);
if (metaMethod.methodType() == QMetaMethod::Signal)
qDebug() << metaMethod.methodSignature();
}
} while ((metaObject = metaObject->superClass()));
return application.exec();
}
main.pro
TEMPLATE = app
TARGET = main
QT += widgets
SOURCES += main.cpp
构建和运行
qmake && make && ./main
输出
"pressed()"
"released()"
"clicked(bool)"
"clicked()"
"toggled(bool)"
"windowTitleChanged(QString)"
"windowIconChanged(QIcon)"
"windowIconTextChanged(QString)"
"customContextMenuRequested(QPoint)"
"destroyed(QObject*)"
"destroyed()"
"objectNameChanged(QString)"
相关文章:
- Qt VTK交互风格的信号到小部件
- Pybind11:将元组列表从Python传递到C++
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 读取文件的最后一行并输入到链接列表时出错
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 复制列表初始化的隐式转换的等级是多少
- LNK2038、MSVS2017 MAGMA的原因列表
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 没有为自己的结构调用列表推回方法
- 使用简单类型列表实现的指数编译时间.为什么
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 一对向量构造函数:初始值设定项列表与显式构造
- 程序接收信号SIGSEGV,分段错误.C++列表
- 单向列表中的分割违规信号
- Qt-有没有一种方法可以获得一个类中所有自定义插槽和信号的列表
- 运行时可用信号列表
- 如何更改"管道核心转储到程序"捕获的信号列表?
- 信号发出问题-列表视图没有显示完整的列表