2014-07-01 63 views
1

我有一個對象,其狀態由用戶通過QDialog控制。在對話窗口中有很多QLineEdit s,QRadioButton s和其他東西。我在對象中創建了slots,並將它與小部件中的signals連接起來。 Everythig工作正常,只要我按下小部件,對象的狀態就會改變。現在我已經添加了okcancel按鈕,並且我希望僅在單擊ok按鈕後才能更改對象狀態,而按下cancel按鈕時不會更改它。那麼,是否有可能從零件中捕獲信號並在點擊時點擊ok按鈕或點擊時抑制它們。cancel按鈕被點擊。我正在使用Qt 5.2.1抑制信號並在稍後發出

+3

在窗口小部件的插槽中,例如LineEdit或QRadiobutton你必須暫時儲存國家。點擊確定按鈕後,您可以將數據寫入持久性存儲或類似的東西。取消按鈕丟棄所有臨時數據。 – Matthias

回答

0

你不能輕易做到這一點。另外我認爲在信號級別解決這個問題是錯誤的。

您應該緩存這些值並將它們設置爲ok(不取消)。或者您可以直接從小部件讀取值,並以相同的方式將它們傳遞給對象,而無需緩存。

你在建立一個設置對話框嗎?

+0

是的,它是一些情節的設置對話框。當創建對話框時,它從圖中讀取參數,並使用該值構造小部件。我不想讀取所有小部件的值並將它們應用於繪圖,因爲在這種情況下,所有繪圖都將重繪。我只想重繪那些參數已經改變的圖。 – lnk

+0

然後將新值與圖的當前值進行比較,並僅在更改後才設置它們。如果可能的話,最好的做法是將這個值更改檢查集成到plot setter方法中。 – Silicomancer