2010-07-01 11 views
6

Tôi đang tìm cách tạo một QToolBar với một vài hành động trong đó, mỗi hành động là "có thể kiểm tra" (nghĩa là, tôi gọi setCheckable (true) trên mỗi hành động sau khi tạo nó, để lại nút ở trạng thái giảm sau nhấp vào nó).Cách tốt nhất để thực hiện một QToolBar của "kiểm tra" QToolButtons, nơi chỉ có một trong các nút có thể được kiểm tra tại một thời điểm?

Cách duy nhất tôi có thể nghĩ là "bỏ chọn" các nút khác là móc vào tín hiệu kích hoạt của từng nút và bỏ chọn các nút khác khi chọn một nút nhất định.

Có cách nào tốt hơn không?

Trả lời

11

Tạo một QActionGroup và để nó là cha mẹ của hành động của bạn. Điều này QActionGroup sẽ duy trì trạng thái của trẻ em của nó.

QActionGroup *anActionGroup = new QActionGroup(yourParentWidget); 
QAction* action1 = new QAction("Action 1", anActionGroup); 
QAction* action2 = new QAction("Action 2", anActionGroup); 
QAction* actionN = new QAction("Action N", anActionGroup); 
action1->setCheckable(true); 
action2->setCheckable(true); 
actionN->setCheckable(true); 

// Add these action to the tool bar 
+4

Điều đó sẽ hiệu quả, đối với trường hợp chung của n nút độc quyền, cũng có QButtonGroup. –