QSpinBox 箭头放置在行编辑之外(css)

发布于 2025-01-07 12:25:43 字数 1931 浏览 3 评论 0原文

image
(来源:metrotek.spb.ru< /a>)

如何使用 Qt CSS 帮助来做到这一点?

我尝试使用

subcontrol-origin: margin;
position: absolute;

但没有成功。

感谢您的帮助

编辑

感谢您的帮助,我的问题的最终 CSS 是:

QSpinBox#spin {
margin-left: 20px;  /* make room for the arrows */
margin-right: 20px;  /* make room for the arrows */
width: 20px;

border: 2 solid #515151;
background-color: #434343;
}

QSpinBox#spin::up-button  {
subcontrol-origin: margin;
subcontrol-position: center left;

width: 19px;
border-width: 1px;
}

QSpinBox#spin::up-arrow  {
image: url(:/res/images/up.png);

min-width: 19px;
min-height: 14px;
max-width: 19px;
max-height: 14px;
height: 19px;
width: 14px;
}

QSpinBox#spin::up-button:pressed  {
top: 1px;
right: 1px;
}

QSpinBox#spin::down-button  {
subcontrol-origin: margin;
subcontrol-position: center right;
width: 19px;
border-width: 1px;
}

QSpinBox#spin::down-arrow  {
image: url(:/res/images/down.png);

min-width: 19px;
min-height: 14px;
max-width: 19px;
max-height: 14px;
height: 19px;
width: 14px;
}

QSpinBox#spin::down-button:pressed  {
top: 1px;
left: 1px;
}

以及额外的 CSS,如奖金:) 如果您想仅在右侧编辑之外设置“向上、向下”箭头的位置:

QSpinBox#spin {
margin-right: 40px;  /* make room for the arrows */
width: 20px;

border: 2 solid #515151;
background-color: #434343;
}

QSpinBox#spin::up-button  {
subcontrol-origin: margin;
subcontrol-position: center right;
position: relative;

left: -20px;   /*   shift position back*/
width: 19px;
border-width: 1px;
}

QSpinBox#spin::down-button  {
subcontrol-origin: margin;
subcontrol-position: center right;
width: 19px;
border-width: 1px;
}

image
(source: metrotek.spb.ru)

How to do it with Qt CSS help ?

I have try to use

subcontrol-origin: margin;
position: absolute;

but no success.

Thank for any help

Edit

Thank you for help and final CSS for my problem is:

QSpinBox#spin {
margin-left: 20px;  /* make room for the arrows */
margin-right: 20px;  /* make room for the arrows */
width: 20px;

border: 2 solid #515151;
background-color: #434343;
}

QSpinBox#spin::up-button  {
subcontrol-origin: margin;
subcontrol-position: center left;

width: 19px;
border-width: 1px;
}

QSpinBox#spin::up-arrow  {
image: url(:/res/images/up.png);

min-width: 19px;
min-height: 14px;
max-width: 19px;
max-height: 14px;
height: 19px;
width: 14px;
}

QSpinBox#spin::up-button:pressed  {
top: 1px;
right: 1px;
}

QSpinBox#spin::down-button  {
subcontrol-origin: margin;
subcontrol-position: center right;
width: 19px;
border-width: 1px;
}

QSpinBox#spin::down-arrow  {
image: url(:/res/images/down.png);

min-width: 19px;
min-height: 14px;
max-width: 19px;
max-height: 14px;
height: 19px;
width: 14px;
}

QSpinBox#spin::down-button:pressed  {
top: 1px;
left: 1px;
}

and additional CSS like a bonus :)
If you like to setup position for "up,down" arrows outside the edit at the right side only:

QSpinBox#spin {
margin-right: 40px;  /* make room for the arrows */
width: 20px;

border: 2 solid #515151;
background-color: #434343;
}

QSpinBox#spin::up-button  {
subcontrol-origin: margin;
subcontrol-position: center right;
position: relative;

left: -20px;   /*   shift position back*/
width: 19px;
border-width: 1px;
}

QSpinBox#spin::down-button  {
subcontrol-origin: margin;
subcontrol-position: center right;
width: 19px;
border-width: 1px;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦一生花开无言 2025-01-14 12:25:43

您看过 Qt 样式表指南吗?他们有一个关于如何定位向上和向下箭头的非常具体的示例:

这里是链接

QSpinBox {
     padding-right: 15px; /* make room for the arrows */
     border-image: url(:/images/frame.png) 4;
     border-width: 3;
 }

 QSpinBox::up-button {
     subcontrol-origin: border;
     subcontrol-position: top right; /* position at the top right corner */

     width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */
     border-image: url(:/images/spinup.png) 1;
     border-width: 1px;
 }

 QSpinBox::down-button {
     subcontrol-origin: border;
     subcontrol-position: bottom right; /* position at bottom right corner */

     width: 16px;
     border-image: url(:/images/spindown.png) 1;
     border-width: 1px;
     border-top-width: 0;
 }

只需调整子控制位置即可。并调整 QSpinBox 的填充,使其左侧也有填充。

Have you taken a look at the Qt Stylesheet guide? They have a really specific example of how to position your up and down arrows:

here is the link

QSpinBox {
     padding-right: 15px; /* make room for the arrows */
     border-image: url(:/images/frame.png) 4;
     border-width: 3;
 }

 QSpinBox::up-button {
     subcontrol-origin: border;
     subcontrol-position: top right; /* position at the top right corner */

     width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */
     border-image: url(:/images/spinup.png) 1;
     border-width: 1px;
 }

 QSpinBox::down-button {
     subcontrol-origin: border;
     subcontrol-position: bottom right; /* position at bottom right corner */

     width: 16px;
     border-image: url(:/images/spindown.png) 1;
     border-width: 1px;
     border-top-width: 0;
 }

Just adjust the subcontrol-position. And also adjust the padding for the QSpinBox to give it padding on the left as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文