gpt4 book ai didi

c++ - QSignalMapper 不触发 SLOT

转载 作者:行者123 更新时间:2023-11-28 05:47:18 25 4
gpt4 key购买 nike

我正在尝试将 QSignalMapper 与我的按钮一起使用,但我似乎无法让它工作以触发我的插槽。

这是我的 SignalMapper 代码:

在我的标题中:

...
private:

QSignalMapper *mapper;

在我的 cpp 中:

//Constructor:
mapper = new QSignalMapper(this);

//Init function, called by the constructor
connect(mapper, SIGNAL(mapped(int)), this, SLOT(HandleSignalEvents(int)));

这是将我的按钮连接到它的代码:

connect(m_ui->addEntryButton, SIGNAL(clicked()), mapper, SLOT(map()));
mapper->setMapping(m_ui->addEntryButton, 1);

两个连接都返回 true 作为值,因此应该正确设置连接。然而,这个插槽根本没有被触发:

public slots:

void HandleSignalEvents(int);

----------------------------------------

void UIController::HandleSignalEvents(int param)
{
//Do something
}

我没有得到任何错误,所以我无法真正弄清楚问题是什么。两个连接似乎都像往常一样工作,但不会触发操作。

这里可能出了什么问题?

编辑:

请注意,m_signalMapper 是该类的私有(private)成员值。

编辑2:

由于需求,这里是我的整个构造函数链:

UIController::UIController(Ui::TodoListerClass &ui)
{
//Unrelated initializations
mapper = new QSignalMapper(this);
Init();
}

void UIController::Init()
{
connect(mapper, SIGNAL(mapped(int)), this, SLOT(HandleSignalEvents(int)));

InitUI();
InitBinds();
}

void UIController::InitBinds()
{
connect(m_ui->addEntryButton, SIGNAL(clicked()), mapper, SLOT(map()));
mapper->setMapping(m_ui->addEntryButton, 1);
}

编辑 2:

更多代码:

主要内容:

#include "todolister.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TodoLister w;
w.show();
return a.exec();
}

TodoLister(.h):

class TodoLister : public QMainWindow
{
Q_OBJECT

public:
TodoLister(QWidget *parent = 0);
~TodoLister();

private:
Ui::TodoListerClass ui;
};

TodoLister(.cpp):

TodoLister::TodoLister(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
UIController uiController(ui);
}

最佳答案

TodoLister::TodoLister(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
UIController uiController(ui);
}

当构造函数返回时,您的 uiController 对象超出范围,因此之后无法发出信号,因为它已被删除。

关于c++ - QSignalMapper 不触发 SLOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com