c++ - 在 SLOT 中动态调用函数

标签 c++ qt function parameter-passing slot

我想将函数动态地发送到 SLOT - 这个想法是使用相同的按钮设置(使代码重用)但具有不同的处理程序:

函数调用:

    buttonSetup(loginButton, "Login", 100, 200, 100, 25, &KHUB::handleLogin);
    buttonSetup(registerButton, "Register", 225, 200, 100, 25, &KHUB::handleRegister);

函数设置:

    void KHUB::buttonSetup(QPushButton *button, const QString name, int posX, int posY, int width, int height, void(KHUB::*fptr)())
{
    button = new QPushButton(name, this);
    button->setGeometry(QRect(QPoint(posX, posY), QSize(width, height)));

    //Event Listener
    connect(button, SIGNAL(released()), this, SLOT(fptr));
}

我试图将函数作为参数传递并根据指针获取其名称(这并不代表代码在此处的处理方式),但我不确定这是否是最佳解决方案甚至一个办法。有谁知道这是否可行以及我如何才能做到这一点?

按照@Slyps [工作代码] 的指示进行编辑:

函数调用:

    buttonSetup(&loginButton, "Login", 100, 200, 100, 25, &KHUB::handleLogin);
    buttonSetup(&registerButton, "Register", 225, 200, 100, 25, &KHUB::handleRegister);

函数设置:

    void KHUB::buttonSetup(QPushButton **button, const QString name, int posX, int posY, int width, int height, void(KHUB::*fptr)())
{
    *button = new QPushButton(name, this);
    (*button)->setGeometry(QRect(QPoint(posX, posY), QSize(width, height)));

    //Event Listener
    connect(*button, &QPushButton::released, this, fptr);
}

最佳答案

您需要使用更新的语法:

connect(button, &QPushButton::released, this, fptr);

关于c++ - 在 SLOT 中动态调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27547478/

相关文章:

java - 使用 OpenCV 2.4.8 为 Java 编写 FaceRecognizer 的问题

c++ - 要测试代码更改的结果,我是否总是需要重新构建整个东西?

python-3.x - 在Python中解析多个xml文件

c++ - 将二维数组传递给 C++ 中的函数

C++:将 boost::optional<type> 转换为类型的最安全方法

Python:从 Qt Designer 创建的 QPlainTextWidget 获取击键

c++ - 如果有一个在数组中查找重复项并显示它 C++

c++ - 随机函数可以返回的范围是多少?

c++ - 如何在 Doxygen 中记录一个单词,它是代码中的实体名称,但在当前上下文中不是?

c++ - QGraphicsView菜鸟问题