gpt4 book ai didi

c++ - Qt 插槽未被调用

转载 作者:行者123 更新时间:2023-11-28 03:20:30 25 4
gpt4 key购买 nike

我有一个程序,在该程序中,我将 QSignalMapper 多个信号从对象连接到主程序中的插槽:

class A()
{
private:
QSignalMapper * signalMapperRead_;
std::vector<Service*> services_;
public:
void initConnection()
{
signalMapperRead_ = new QSignalMapper();

connect(signalMapperRead_, SIGNAL(mapped(int)), this, SLOT(readyToSendToService(int)));

for ( size_t i = 0 ; i < services_.size() ; ++i )
{
connect(services_.at(i), SIGNAL(readyToSendToServer()), signalMapperRead_, SLOT(map()));
signalMapperRead_->setMapping(services_.at(i), (int)i);
}
}

int run()
{
initConnection();
for(;;)
{
//do stuff;
}
}

};

int main()
{
QApplication app(argc, argv);
A * a = new A();
a->run();
return app.exec
}

然后,由于该程序是一种服务器,我让他循环,并等待新客户端,...

但是插槽永远不会被调用。我在想,这可能是因为程序总是在循环中,从不检查是否已发出信号。

你能帮帮我吗

最佳答案

不要使用自己的循环,创建一个 QApplication 并调用它的 exec() 方法。

你必须调用QApplication::exec()用于 Qt 传递信号。

编辑更改的代码:只需删除 for(;;)-Loop,这是不必要的。 QApplication::exec() 有自己的循环。

关于c++ - Qt 插槽未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15589367/

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