gpt4 book ai didi

c++ - 如何确定哪个小部件触发了插槽功能?

转载 作者:太空狗 更新时间:2023-10-29 21:21:21 25 4
gpt4 key购买 nike

我有一个包含 10 个对象的数组,每个对象有 8 个参数,所有这些都在 GUI 中表示。我宁愿不定义 80 个插槽;我更希望有 1 个插槽来处理所有 GUI 触发的更改:

// Connect 10 Term objects
for( int n = 0; n < m_MaxTerms; ++n )
{
// Connect several checkboxes for the nth Term item
connect(m_Term[n].m_CD.GetData(), SIGNAL(clicked(bool)), this, SLOT(UpdateTerm()));
// Connect several edit fields for the nth Term item
connect(m_Term[n].m_Volume.GetData(), SIGNAL(editingFinished()), this, SLOT(UpdateTerm()));
...
}

当 UpdateTerm() 被调用时,我需要根据触发它的小部件的变化更新相应的数据。但是我怎么能从 UpdateTerm() 中判断是什么小部件触发了它呢?解决该问题的一种方法是在插槽被任何小部件触发时更新来自所有小部件的数据。但是,这是非常低效的; 更新更改的项目会更受欢迎。

因此问题来了:是否可以从插槽函数中确定是哪个小部件触发了它?这样做最干净的方法是什么?

最佳答案

您可以使用QObject::sender() 函数来确定哪个对象发出了信号。此功能记录在案 here .

关于c++ - 如何确定哪个小部件触发了插槽功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22647684/

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