@@ -46,18 +46,18 @@ static const int MAX_GLOBAL_RECENT_DOCS= 25;
4646namespace {
4747constexpr int kMainMargin = 32 ; // 主内容区外边距
4848constexpr int kMainSpacing = 24 ; // 主纵向布局间距
49- constexpr int kStyleCardWidth = 100 ; // 样式卡片宽度
50- constexpr int kStyleCardHeight = 120 ; // 样式卡片高度
51- constexpr int kStyleIconSize = 64 ; // 样式卡片图标尺寸
49+ constexpr int kStyleCardWidth = 160 ; // 样式卡片宽度
50+ constexpr int kStyleCardHeight = 256 ; // 样式卡片高度
51+ constexpr int kStyleIconSize = 96 ; // 样式卡片图标尺寸
5252constexpr int kStyleCardTopPadding = 12 ; // 样式卡片顶部内边距
5353constexpr int kStyleCardMargin = 8 ; // 样式卡片内边距
5454constexpr int kStyleCardSpacing = 4 ; // 样式卡片内部控件间距
5555constexpr int kStyleCardsSpacing = 16 ; // 样式卡片横向间距
5656constexpr int kStyleCardRadius = 8 ; // 样式卡片圆角
5757constexpr int kStyleIconRadius = 8 ; // 样式图标圆角
5858constexpr int kSectionTitleFontPx = 16 ; // 分区标题字号
59- constexpr int kStyleIconFontPx = 18 ; // 样式图标字母字号
60- constexpr int kStyleNameFontPx = 12 ; // 样式名称字号
59+ constexpr int kStyleIconFontPx = 48 ; // 样式图标字母字号
60+ constexpr int kStyleNameFontPx = 14 ; // 样式名称字号
6161constexpr int kStyleBadgeFontPx = 10 ; // Default 徽标字号
6262constexpr int kStyleBadgeRadius = 8 ; // Default 徽标圆角
6363constexpr int kStyleBadgePadY = 1 ; // Default 徽标纵向内边距
@@ -89,8 +89,6 @@ StyleCard::StyleCard (const DocStyle& style, QWidget* parent)
8989 int iconSize= DpiUtils::scaled (kStyleIconSize );
9090
9191 setFixedSize (width, height);
92- setStyleSheet (QString (" border-radius: %1px;" )
93- .arg (DpiUtils::scaled (kStyleCardRadius )));
9492 setCursor (Qt::PointingHandCursor);
9593 setFocusPolicy (Qt::NoFocus);
9694 setToolTip (style.description );
@@ -101,17 +99,20 @@ StyleCard::StyleCard (const DocStyle& style, QWidget* parent)
10199 DpiUtils::scaled (kStyleCardMargin ),
102100 DpiUtils::scaled (kStyleCardMargin ));
103101 layout->setSpacing (DpiUtils::scaled (kStyleCardSpacing ));
104- layout->setAlignment (Qt::AlignTop );
102+ layout->setAlignment (Qt::AlignCenter );
105103
106104 // 预览图占位(使用 QLabel 作为图标容器)
107105 iconLabel_= new QLabel (this );
108106 iconLabel_->setFixedSize (iconSize, iconSize);
109107 iconLabel_->setAlignment (Qt::AlignCenter);
110108 iconLabel_->setObjectName (" style-card-icon" );
111- iconLabel_->setStyleSheet (QString (" border-radius: %1px;" )
112- .arg (DpiUtils::scaled (kStyleIconRadius )));
113- // 显示样式ID的首字母作为占位
114- iconLabel_->setText (style.id .left (1 ).toUpper ());
109+
110+ if (style.id == " generic" ) {
111+ iconLabel_->setText (" +" );
112+ }
113+ else {
114+ iconLabel_->setText (style.id .left (1 ).toUpper ());
115+ }
115116 QFont iconFont= DpiUtils::scaledFont (iconLabel_->font (), kStyleIconFontPx );
116117 iconFont.setBold (true );
117118 iconLabel_->setFont (iconFont);
@@ -124,23 +125,6 @@ StyleCard::StyleCard (const DocStyle& style, QWidget* parent)
124125 DpiUtils::applyScaledFont (nameLabel_, kStyleNameFontPx );
125126 layout->addWidget (nameLabel_, 0 , Qt::AlignCenter);
126127
127- // "默认"标签
128- if (style.isDefault ) {
129- badgeLabel_= new QLabel (qt_translate (" Default" ), this );
130- badgeLabel_->setObjectName (" style-card-badge" );
131- badgeLabel_->setAttribute (Qt::WA_StyledBackground, true );
132- badgeLabel_->setAlignment (Qt::AlignCenter);
133- DpiUtils::applyScaledFont (badgeLabel_, kStyleBadgeFontPx );
134- badgeLabel_->setStyleSheet (
135- QString (" background-color: #2791ad; border: 1px solid transparent; "
136- " border-radius: %1px; "
137- " padding: %2px %3px;" )
138- .arg (DpiUtils::scaled (kStyleBadgeRadius ))
139- .arg (DpiUtils::scaled (kStyleBadgePadY ))
140- .arg (DpiUtils::scaled (kStyleBadgePadX )));
141- layout->addWidget (badgeLabel_, 0 , Qt::AlignCenter);
142- }
143-
144128 setObjectName (" style-card" );
145129}
146130
@@ -157,7 +141,6 @@ StyleCard::setSelected (bool selected) {
157141
158142void
159143StyleCard::enterEvent (QEnterEvent* event) {
160- // 悬停时选中
161144 emit hovered ();
162145 QWidget::enterEvent (event);
163146}
@@ -175,21 +158,10 @@ StyleCard::paintEvent (QPaintEvent* event) {
175158 QPainter painter (this );
176159 painter.setRenderHint (QPainter::Antialiasing);
177160
178- // 绘制背景
179161 QStyleOption opt;
180162 opt.initFrom (this );
181- style ()->drawPrimitive (QStyle::PE_Widget, &opt, &painter, this );
182163
183- // 绘制选中边框
184- if (isSelected_) {
185- painter.setPen (
186- QPen (opt.palette .highlight (), DpiUtils::scaled (kSelectedBorderPx )));
187- painter.setBrush (Qt::NoBrush);
188- const int inset = DpiUtils::scaled (kSelectedInset );
189- const int radius= DpiUtils::scaled (kSelectedRadius );
190- painter.drawRoundedRect (rect ().adjusted (inset, inset, -inset, -inset),
191- radius, radius);
192- }
164+ style ()->drawPrimitive (QStyle::PE_Widget, &opt, &painter, this );
193165}
194166
195167/* *****************************************************************************
@@ -199,19 +171,8 @@ StyleCard::paintEvent (QPaintEvent* event) {
199171QtFilePage::QtFilePage (QWidget* parent) : QWidget (parent) {
200172 eval_scheme (" (use-modules (startup-tab startup-tab-file))" );
201173
202- // 初始化样式列表
203- styles_= {
204- {" generic" , qt_translate (" Generic" ),
205- qt_translate (" General purpose document" ), true },
206- {" beamer" , qt_translate (" Beamer" ), qt_translate (" Presentation slides" ),
207- false },
208- {" book" , qt_translate (" Book" ), qt_translate (" Book format" ), false },
209- {" exam" , qt_translate (" Exam" ), qt_translate (" Examination paper" ),
210- false },
211- {" letter" , qt_translate (" Letter" ), qt_translate (" Letter format" ),
212- false },
213- {" article" , qt_translate (" Article" ), qt_translate (" Article format" ),
214- false }};
174+ styles_= {{" generic" , qt_translate (" New Blank Document" ),
175+ qt_translate (" Create a new blank document" ), true }};
215176
216177 setupUI ();
217178 loadRecentDocs ();
0 commit comments