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