2013-03-22 354 views

回答

38

toggled信號被髮射每個複選框的選中狀態的變化,即使它通過代碼更改時間,而clicked信號emited只有當用戶與所述複選框相互作用,例如:

ui->checkbox->setChecked(true); // toggled will be emitted but not clicked 
3
QCheckBox::toggled(bool) 

該複選框時改變它的狀態,不管是通過點擊它或使用setCheckedtoggle發射等

QCheckBox::clicked(bool) 

單擊複選框時發出。也就是說,當用戶在複選框上單擊並釋放時。當鍵入快捷鍵或使用click時也會發生。複選框不一定要檢查以便發射。

如果您在偵聽複選框狀態發生變化時,請使用toggled。如果您在監聽用戶單擊複選框時的狀態,則無論是否更改狀態,請使用clicked

6

QCheckBox繼承切換和單擊。

void QAbstractButton::clicked (bool checked = false) [signal] 

當按鈕被激活時,這個信號被髮射(即,按下然後釋放在鼠標光標位於按鈕內),當快捷鍵被輸入,或當點擊()或animateClick()被調用。值得注意的是,如果調用setDown(),setChecked()或toggle(),則不會發出此信號。 如果該按鈕是可檢查的,如果該按鈕被選中,則檢查爲true;如果該按鈕未被檢查,則檢查爲false。

void QAbstractButton::toggled (bool checked) [signal] 

只要可檢查按鈕改變其狀態就會發出此信號。如果按鈕被選中,則檢查爲true;如果未選中該按鈕,則檢查爲false。 這可能是由於用戶操作,單擊()插槽激活,或者因爲調用了setChecked()。 在發出此信號之前,專用按鈕組中的按鈕狀態會更新。這意味着插槽可以作用於狀態發生變化的組中按鈕所發出的「關閉」信號或「開啓」信號。 例如,反應通過新檢出的按鈕發出的信號,但一個槽,其從已被取消選中可以使用以下的圖案來實現按鈕忽略信號:

void MyWidget::reactToToggle(bool checked) 
{ 
    if (checked) { 
     // Examine the new button states. 
     ... 
    } 
} 

http://qt-project.org/doc/qt-4.8/qcheckbox.html