0
我在执行多个检查操作时遇到问题。基本上我所做的是我将点击标记几个动作来调用markSeveral(),然后从那里我打电话clicked()信号列表调用setcheckBoxes(),然后设置复选框。现在这个问题是第一次完全发生,但是当我第二次执行时,setcheckboxes()插槽被调用两次,因此d复选框没有被设置。再次为第三次尝试setcheckboxes()插槽被称为三次,但复选框确实设置。在qt中选择多个复选框
为什么插槽只需拨打一次就拨打了很多次?
请告诉我我在做什么错了
在此先感谢。这是我的代码段:
void Browser::markSeveral()
{
itemClicked=true;
multiSelect=true;
MarkClicked=true;
MarkMenuClicked=true;
connect(list,SIGNAL(clicked(QModelIndex)),this,SLOT(setCheckBoxes(QModelIndex)));
}
void Browser::setCheckBoxes(QModelIndex index)
{
if(MarkClicked ==true && model->data(index,Qt::CheckStateRole) == Qt::Unchecked)
{
model->setData(index,Qt::Checked,Qt::CheckStateRole);
indexList.append(index);
}
else
{
if(MarkClicked ==true && model->data(index,Qt::CheckStateRole) == Qt::Checked)
{
model->setData(index,Qt::Unchecked,Qt::CheckStateRole);
indexList.removeOne(index);
}
}
}
谢谢你这么多..这解决了我的问题 – prakashpun 2011-05-02 10:44:51
或通过'Qt :: UniqueConnection'作为第五个参数连接()' – 2011-05-02 19:28:09
mmutz:是的,忘了相对较新的(好吧,不是新的.. 。) 选项。 – 2011-05-02 19:46:13