From 63ebf7d4f1a095cfbaf329b3f999475263dd963a Mon Sep 17 00:00:00 2001 From: gaozheng Date: Thu, 25 Jun 2026 20:55:18 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=E4=BF=AE=E6=97=A5=E6=9C=9F=E6=97=A5?= =?UTF-8?q?=E5=8E=86=E9=9D=A2=E6=9D=BF=E9=94=99=E4=B9=B1-popup=20=E7=88=B6?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E6=94=B9=E9=A1=B6=E5=B1=82=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E9=81=BF=E5=BC=80=E4=B8=8B=E6=8B=89=E9=A1=B9=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DateRangeEdit 改 QComboBox 子类后,日历 popup 成 QComboBox 后代 → 日历内部日期网格 (QAbstractItemView)吃到全局「QComboBox QAbstractItemView::item」(padding 6px10px/min-height 20px) 下拉列表项样式 → 日期格重叠错位、无星期表头。修:popup 父对象用顶层 window() 而非本 combo, 日历不再是 QComboBox 后代,该 QSS 不匹配 → 日历恢复正常渲染。 注:本地链接因 app 运行中 exe 被锁(LNK1104)未完成,obj 已编译通过;关 app 后重 build 即生效。 --- src/app/panels/columns/DateRangeEdit.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/panels/columns/DateRangeEdit.cpp b/src/app/panels/columns/DateRangeEdit.cpp index cd43efd..d2f9151 100644 --- a/src/app/panels/columns/DateRangeEdit.cpp +++ b/src/app/panels/columns/DateRangeEdit.cpp @@ -20,7 +20,10 @@ DateRangeEdit::DateRangeEdit(QWidget* parent) : QComboBox(parent) { void DateRangeEdit::showPopup() { if (!popup_) { - popup_ = new QFrame(this, Qt::Popup); + // 父对象用顶层窗口而非本 combo:否则日历(QAbstractItemView)成 QComboBox 后代,吃到全局 + // 「QComboBox QAbstractItemView::item」下拉项样式(padding/min-height)→ 日期格重叠错位。 + QWidget* owner = window() ? static_cast(window()) : nullptr; + popup_ = new QFrame(owner, Qt::Popup); popup_->setFrameShape(QFrame::StyledPanel); applyTokenizedStyleSheet( popup_, QStringLiteral("QFrame{background:{{bg/panel}};border:1px solid {{border/default}};"