我遇到了qt信号槽系统的问题。
首先,我创建了一个名为System的类,采用单例模式,这样我可以在需要时访问它的实例。System有一个名为SelectionChanged的信号。
我有一个列表小部件,我正在将其itemSelectionChanged信号连接到我的自定义槽onSelectionChanged上。在onSelectionChanged槽中,我发出了System的SelectionChanged信号。目前还没有任何问题。
在我的软件设计中,对象的选择可以被许多GUI小部件或自定义类使用,并且System的SelectionChanged信号可以由除列表小部件之外的小部件发出。
因此,我在列表小部件中创建了一个名为OnSystemSelectionChanged的槽,然后将其连接到System的SelectionChanged信号。OnSystemSelectionChanged槽如下所示。
void MyListWidget::OnSystemSelectionChanged(QObject *sender)
{
if (sender == this) return;
// Then I want to get a list of selected objects and set them as selection of this widget like this:
this->SetSelection(System::Instance()->GetSelectedObjects());
}
但问题在于当我开始设置列表小部件的选定项时,它会发出itemSelectionChanged信号,我的onSelectionChanged插槽将被调用。然后插槽将发出System的SelectionChanged信号,然后OnSystemSelectionChanged也将被调用。它将通过sender参数停止,但没有一种方法可以一次性设置列表小部件的选定项。
我该如何解决这个问题?
希望我已经很好地解释了我的问题。提前致谢。
编辑:拼写和语法错误已经纠正。