修复侧边栏上的按钮在选中时再单击会被取消选中的问题

This commit is contained in:
RigoLigoRLC
2022-02-05 00:31:05 +08:00
parent af40213c5a
commit 908dd7d7a7

View File

@@ -66,6 +66,8 @@ namespace SpkUi
void BindPageSwitcherButton(QAbstractButton* w) void BindPageSwitcherButton(QAbstractButton* w)
{ {
connect(w, &QAbstractButton::toggled, connect(w, &QAbstractButton::toggled,
this, &SpkSidebarSelector::ButtonToggled);
connect(w, &QAbstractButton::pressed,
this, &SpkSidebarSelector::ButtonPressed); this, &SpkSidebarSelector::ButtonPressed);
} }
void BindCategoryWidget(QTreeWidget* w) void BindCategoryWidget(QTreeWidget* w)
@@ -83,7 +85,7 @@ namespace SpkUi
private slots: private slots:
// We assume the objects in interest all have the correct properties // We assume the objects in interest all have the correct properties
void ButtonPressed(bool aBtnState) void ButtonToggled(bool aBtnState)
{ {
auto b = qobject_cast<QPushButton*>(sender()); auto b = qobject_cast<QPushButton*>(sender());
if(mLastCheckedBtn) if(mLastCheckedBtn)
@@ -93,8 +95,6 @@ namespace SpkUi
mLastCheckedBtn->setChecked(false); mLastCheckedBtn->setChecked(false);
mLastCheckedBtn = nullptr; mLastCheckedBtn = nullptr;
} }
else
b->setChecked(aBtnState);
} }
else if(mLastSelectedItem) else if(mLastSelectedItem)
{ {
@@ -105,6 +105,12 @@ namespace SpkUi
auto id = b->property("spk_pageno").toInt(); auto id = b->property("spk_pageno").toInt();
emit SwitchToPage(static_cast<SpkStackedPages>(id)); emit SwitchToPage(static_cast<SpkStackedPages>(id));
} }
void ButtonPressed()
{ // Prevent a selected button from being deselected by clicking on it
auto b = qobject_cast<QPushButton*>(sender());
if(mLastCheckedBtn == b)
b->setChecked(false);
}
void TreeItemSelected(QTreeWidgetItem *item, int column) void TreeItemSelected(QTreeWidgetItem *item, int column)
{ {
if(mUnusableItems.contains(item)) if(mUnusableItems.contains(item))