Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions deepin-devicemanager/src/Page/PageDetail.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,9 +211,10 @@ void PageDetail::showDeviceInfo(const QList<DeviceBaseInfo *> &lstInfo)
connect(txtBrowser, &TextBrowser::exportInfo, this, &PageDetail::exportInfo);
connect(txtBrowser, &TextBrowser::copyAllInfo, this, &PageDetail::slotCopyAllInfo);
addWidgets(txtBrowser, device->enable() && device->available() && !device->getOtherTranslationAttribs().isEmpty());
// 当添加到最后一个设备详细信息时,隐藏分隔符
if (device == lstInfo.last())
m_ListDetailSeperator[lstInfo.size() - 1]->setVisible(false);
// 当添加到最后一个设备详细信息时,隐藏分隔符。用last()而非lstInfo.size()-1,
// 因为if(!device) continue会跳过空设备,使链表实际长度可能小于lstInfo.size()
if (device == lstInfo.last() && !m_ListDetailSeperator.isEmpty())
m_ListDetailSeperator.last()->setVisible(false);
}
// 刷新展示页面时,滚动条还原
mp_ScrollArea->verticalScrollBar()->setValue(0);
Expand Down Expand Up @@ -360,8 +361,9 @@ void PageDetail::clearWidget()

QList<DetailButton *> listDetailButton = m_ListDetailButton;
m_ListDetailButton.clear();
// 清空DetailButton
// 清空DetailButton,先断开clicked信号,避免延迟销毁期间旧按钮仍派发点击到slotBtnClicked
foreach (auto widget, listDetailButton) {
disconnect(widget, &DetailButton::clicked, this, &PageDetail::slotBtnClicked);
widget->deleteLater();
widget = nullptr;
}
Expand Down Expand Up @@ -395,16 +397,14 @@ void PageDetail::slotBtnClicked()
DetailButton *button = qobject_cast<DetailButton *>(sender());
if (!button)
return;
int index = 0;
foreach (DetailButton *b, m_ListDetailButton) {
if (button == b)
break;
index++;
}

// 按钮可能因刷新重建已移出列表(clearWidget先清链表后deleteLater),此时忽略过期点击
int index = m_ListDetailButton.indexOf(button);
if (index < 0 || index >= m_ListTextBrowser.size())
return;

// 改变按钮的状态,展开和收起的切换
if (button)
button->updateText();
button->updateText();

// 显示内容发生相应变化,也就是是否显示其它信息
TextBrowser *browser = m_ListTextBrowser[index];
Expand Down
Loading