QT本身就带有强大的反射功能,如果想通过函数名称字符串调用函数,需要在被调用的函数前添加宏:Q_INVOKABLE
父类 QtInvoke.h 头文件:
#pragma once
#include <QMainWindow>
#include "ui_QtInvoke.h"
class QtInvoke : public QMainWindow
{
Q_OBJECT
public:
QtInvoke(QWidget *parent = nullptr);
~QtInvoke();
virtual Q_INVOKABLE void test();
virtual Q_INVOKABLE int testAdd(int a, int b);
private:
Ui::QtInvokeClass ui;
};
父类QtInvoke.cpp 文件
#include "QtInvoke.h"
#include <qdebug.h>
QtInvoke::QtInvoke(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
QtInvoke::~QtInvoke()
{}
Q_INVOKABLE void QtInvoke::test() {
qDebug() << " QtInvoke::test()";
}
Q_INVOKAB

本文介绍了QT强大的反射功能,阐述了如何通过函数名称字符串调用函数,需在被调用函数前添加宏Q_INVOKABLE。给出了父类和子类的头文件及源文件代码示例,还展示了main函数代码,最后说明了执行结果。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



