From a8e7d8a79e0ae385b4588d95c79af8b8594ab1ea Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Fri, 18 Sep 2026 16:43:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E5=9B=9E=E6=94=BE=E6=8E=A7=E5=88=B6=E6=9D=A1=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加属性标签并补充中文翻译 - 收紧属性和时间下拉框的宽度范围 - 移除时间下拉框的扩展布局策略 - 使用固定间距区分属性设置与播放控制 - 将剩余空间统一保留在控制条右侧 --- Bin/Config/Lang/cn/nmNum_cn.qm | Bin 147619 -> 147684 bytes Bin/Config/Lang/cn/nmNum_cn.ts | 1 + .../nmSubWxs/nmWxPebiResultControlBar.cpp | 29 +++++++++++++++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Bin/Config/Lang/cn/nmNum_cn.qm b/Bin/Config/Lang/cn/nmNum_cn.qm index 127e75bc8a376bcb6cbecdf162b7f09ce529fd31..c0659bfb8ba1c83110f39c2f442f76284f00304b 100644 GIT binary patch delta 3366 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 delta 3314 zcmXAscR*A37RS%IRw5waC{U`1QjykCtd^o!#Q|!q)MuTbXdPI2 zM~VxI6`p-6IFZ&q6a}lI2#Qpz1Scp8hy!PV_mlh2{p6S5&2OCXJty~5#oejmW;<-p zv^R1W8ZsjcXp@<2a0v&1c>sr^C7!P7A@;foAX@@>yD78yR=5)YKNRq{l@hO*CEhHN z`1mu4ulq{uPVXVd4U)*8qB=BTEb*K{oW{PZ1T5Y_ft0Qf48s$^%y1;B4T1K9aB2+W$QJ?H=|NBj0XDs$QZ{EKvs}+?DeRj9cq$2mavOl6 z+#aHK9SCP+fHl99lMt&p4vyQ-0zNf^`^;>>O9G_}L0nfOl?r;yB(q?`Nn~xQ)op>1 z>z)JFUX|EU0#V*+Z25KyvD9ilgs7k_z|(sqUK~NwE!SdiYPHnj9O6a2xCCN1k7pb0 zCSTE{+YXbsw}6#pFe#D!F5wAGo)N$<7f&go9`h+nG->8TTzLRHXokewg;Xa7GrJ{b z?gV^!lI#^muI({JDD*gsrYrOsUs$@T7;vK~vF0viDNH&~*p$2tAp8|%Z;=5kJO;bP zGQjgqWL6kFjj(S-5_5wI3I~S*+)~4_fMLLK-@}Q5P{4CZP#!#iIp!SsT19#efa
9lg0&A)PkH4WTRf!nFeRG)|!n}nhsN+#h#p+P* z<`e2rUvu%{8XYYu2G6zux`Cf^c)P3JYS}qFdFdYIEk+=&>1^D zI#Q!uq!=QLJFj34E}}sDAnwTpO159K;?P6c)=~chEEyv4w{nRW>m^>vmw2^H;==}s z&9@}Jbe7l|D6z|?ha5hWC|fMs`l1UkxJ|Zm$w0v0Eo8ZyDgYPN_s{{Ky_5Z1x*Wjg zN7?R^M*-7!%ks^6%*Q(@qgSN3O19sp065tnWM-pzvT{{lrVQ)ISF6WU6s>(x|84_+AodHu{DJ(D$p?c2hioVOqFU(S5l z#7it{4^md2Fuz>>a>*uulvMsourrI5rF`977R75O^EVds11PKDZ?1d=II@7h`ToWh z?Zi9iaV@z!m~>S@M+5#rIgU>>r{o2d zpE7rp$^YZUWW4++WSYfj2HhyvXCm&C)JLh2A(z>1$J zq_5Vcm$3FB3%#Mu!uq8ufNdIy9cP7&)vN%WZKjmIF}fAPfsSN=*S5mJ4Q&9MGK9m| z7XaRyP3FE@%^sorX%UNWccEgrKj4KZ;$2KQlLB1~Xiaf0F`~}W!Iep9ISWmfFdRZ1 zF2QI+zOE*eQ=Dr&enX|MdQ2s=Ya*_rh<-7;`IcE2z*Ol&%k1xK0o)QTbML$X{PQ;| z>}T-ww%mKy86d5~av$^ooTZU?B+qjHu}c8U$5|eXWYxUt-_+U9nX6}#?-ql9QnH&K zXHbTl7WGu%=Aq!;in5y3EPx`Z&dnHAaZj{AP{y1&QgqQR1oX%gU0IicRbisr3l%G; zUZQ(V1K{SdqG|nyfL&w6VDB$jg|HOE$|C@b$Hk8;*0Xlw21UEa%p!5ht`Gpr0b+u@ zm?cP=#5Ol^#>Ml1d4*z9)P2ASxnj~UZ2tAX#Ci5CybiCD*itCY8@&p!F-2NF#gFSbW`P{V=83H1Szn;|DRdOzs0zjQcb8ZZX{65nS{zLFo(9oDQT8Xx z^^)rp;Ta~{D5^~PtWnuZ8EkHj;!+E%?}8JRdTMn^ipTk10eHttTsTD0Hk*ZN>o#ij z48vmb_44R*@$OV+e8t*!K{l|=4;TcR*rkfQhLM_Wx}vn;4EvD)2iA1|2{#bzS-g?<*s}d z?oHoNoY9%PZl+~MBUg2W3XPHC6lFy?5BNNdI*psW8tyC2nSZko%2wVfVcjc$^1)Zn zS;1~qwuG>Jys1z=Et$kBmO#a(6*!#&2fXhurVj{16BP_d#PMY97mOn)!q0%aDA`Ys zgDAry+tf?EAdOqHGdV+W5?jpbQj-T6Tk8#xZJu39xo#a#Q#_o_HQ zrWhwrslHOO+>70!iodZJFtJ@VC!6Ko{YonI*Rz$=UKg?ITcpaEJPfdOADR6P%u;-S zUZ+!Cy8Quw?wrIiMpgAQrVM}NQAj`->+zQboE0~yM<$J7;r@c62O2a-)Kfmv0_sTO zv*VOLFif*Wo$9P$WnzuQ;{H@Oa1AGPP+Xu1?I1)O5rDx07Zn;_g#RMK=GyC(l1O0G0> diff --git a/Bin/Config/Lang/cn/nmNum_cn.ts b/Bin/Config/Lang/cn/nmNum_cn.ts index a95c6a41..c445156b 100644 --- a/Bin/Config/Lang/cn/nmNum_cn.ts +++ b/Bin/Config/Lang/cn/nmNum_cn.ts @@ -2840,6 +2840,7 @@ Reason: %1 nmWxPebiResultControlBar + Property属性 Display property显示属性 Color settings颜色设置 First frame第一帧 diff --git a/Src/nmNum/nmSubWxs/nmWxPebiResultControlBar.cpp b/Src/nmNum/nmSubWxs/nmWxPebiResultControlBar.cpp index 78883f90..708648fa 100644 --- a/Src/nmNum/nmSubWxs/nmWxPebiResultControlBar.cpp +++ b/Src/nmNum/nmSubWxs/nmWxPebiResultControlBar.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -17,6 +18,14 @@ namespace { +const int PROPERTY_COMBO_MINIMUM_WIDTH = 110; +const int PROPERTY_COMBO_MAXIMUM_WIDTH = 140; +const int TIME_COMBO_MINIMUM_WIDTH = 160; +const int TIME_COMBO_MAXIMUM_WIDTH = 240; +const int CONTROL_GROUP_GAP = 8; +// Qt 4 按 20 个“X”字符估算 SizeHint,常用字体下约为 190px。 +const int TIME_COMBO_MINIMUM_CONTENT_LENGTH = 20; + QString resultControlIconPath(const QString& sFileName) { const QString sApplicationDir = QCoreApplication::applicationDirPath(); @@ -306,8 +315,12 @@ void nmWxPebiResultControlBar::createUi() pLayout->setContentsMargins(4, 3, 4, 3); pLayout->setSpacing(4); + QLabel* pPropertyLabel = new QLabel(tr("Property"), this); + pPropertyLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); + m_pPropertyCombo = new QComboBox(this); - m_pPropertyCombo->setMinimumWidth(140); + m_pPropertyCombo->setMinimumWidth(PROPERTY_COMBO_MINIMUM_WIDTH); + m_pPropertyCombo->setMaximumWidth(PROPERTY_COMBO_MAXIMUM_WIDTH); m_pPropertyCombo->setFixedHeight(24); m_pPropertyCombo->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Fixed); @@ -324,10 +337,15 @@ void nmWxPebiResultControlBar::createUi() this, QString::fromLatin1("NmPreviousStep.png"), tr("Previous frame")); m_pTimeCombo = new QComboBox(this); - m_pTimeCombo->setMinimumWidth(150); + m_pTimeCombo->setMinimumWidth(TIME_COMBO_MINIMUM_WIDTH); + m_pTimeCombo->setMaximumWidth(TIME_COMBO_MAXIMUM_WIDTH); + m_pTimeCombo->setMinimumContentsLength( + TIME_COMBO_MINIMUM_CONTENT_LENGTH); + m_pTimeCombo->setSizeAdjustPolicy( + QComboBox::AdjustToMinimumContentsLengthWithIcon); m_pTimeCombo->setFixedHeight(24); m_pTimeCombo->setSizePolicy( - QSizePolicy::Expanding, QSizePolicy::Fixed); + QSizePolicy::Preferred, QSizePolicy::Fixed); m_pTimeCombo->setToolTip(tr("Result time")); m_pNextButton = createControlButton( this, QString::fromLatin1("NmNextStep.png"), @@ -342,15 +360,18 @@ void nmWxPebiResultControlBar::createUi() this, QString::fromLatin1("NmAnimationSettings.png"), tr("Animation settings")); + pLayout->addWidget(pPropertyLabel, 0, Qt::AlignVCenter); pLayout->addWidget(m_pPropertyCombo); pLayout->addWidget(m_pColorSettingsButton); + pLayout->addSpacing(CONTROL_GROUP_GAP); pLayout->addWidget(m_pFirstButton); pLayout->addWidget(m_pPreviousButton); - pLayout->addWidget(m_pTimeCombo, 1); + pLayout->addWidget(m_pTimeCombo); pLayout->addWidget(m_pNextButton); pLayout->addWidget(m_pLastButton); pLayout->addWidget(m_pPlayPauseButton); pLayout->addWidget(m_pSettingsButton); + pLayout->addStretch(1); connect(m_pPropertyCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onPropertyIndexChanged(int)));