diff --git a/frame/item/quicksettingitem.cpp b/frame/item/quicksettingitem.cpp index bbe9e7797..d6d5710f6 100644 --- a/frame/item/quicksettingitem.cpp +++ b/frame/item/quicksettingitem.cpp @@ -141,6 +141,10 @@ void QuickSettingItem::onRequestAppletShow(PluginsItemInterface *itemInter, cons QuickSettingItem *QuickSettingFactory::createQuickWidget(PluginsItemInterface * const pluginInter) { + // 如果显示在面板的图标或者Widget为空,则不让显示(例如电池插件) + if (pluginInter->icon(DockPart::QuickPanel).isNull() && !pluginInter->itemWidget(QUICK_ITEM_KEY)) + return nullptr; + const QJsonObject metaData = QuickSettingController::instance()->metaData(pluginInter); if (metaData.contains("primary") && metaData.value("primary").toBool()) return new MultiQuickItem(pluginInter); diff --git a/frame/window/quicksettingcontainer.cpp b/frame/window/quicksettingcontainer.cpp index 904871a0b..daaa62ce0 100644 --- a/frame/window/quicksettingcontainer.cpp +++ b/frame/window/quicksettingcontainer.cpp @@ -202,6 +202,9 @@ QPoint QuickSettingContainer::hotSpot(const QPixmap &pixmap) void QuickSettingContainer::appendPlugin(PluginsItemInterface *itemInter, bool needLayout) { QuickSettingItem *quickItem = QuickSettingFactory::createQuickWidget(itemInter); + if (!quickItem) + return; + quickItem->setParent(m_pluginWidget); quickItem->setMouseTracking(true); quickItem->installEventFilter(this); diff --git a/plugins/power/powerplugin.cpp b/plugins/power/powerplugin.cpp index b5aea7bb4..6e83cec23 100644 --- a/plugins/power/powerplugin.cpp +++ b/plugins/power/powerplugin.cpp @@ -201,7 +201,10 @@ void PowerPlugin::pluginSettingsChanged() QIcon PowerPlugin::icon(const DockPart &dockPart) { - Q_UNUSED(dockPart); + // 电池插件不显示在快捷面板上,因此此处返回空图标 + if (dockPart == DockPart::QuickPanel) + return QIcon(); + static QIcon batteryIcon; const QPixmap pixmap = m_powerStatusWidget->getBatteryIcon(); batteryIcon.detach();