gpt4 book ai didi

qt - 如何使用 qt 样式表只自定义部分 qwidget 边框?

转载 作者:行者123 更新时间:2023-11-27 23:12:15 25 4
gpt4 key购买 nike

我想用stylesheet做qwidget border,看起来像个括号,纯stylesheet可以吗?

screenshot

我的引用是 qt 样式表 doc ,但不确定如何将其自定义为类似于屏幕截图。

这是我所能得到的,只显示左右边框。

QWidget{
border : 1px solid red;
border-width: 0px 1px;
}

最佳答案

问题截图中的示例只能通过图像 AFAIK 实现,即使在具有完整 CSS 支持的 Web 浏览器中也是如此。使用 Qt,您实际上有 3 个选项可以在小部件后面/周围使用自定义图像。

至:background-imageborder-imageimage:

https://doc.qt.io/qt-5/stylesheet-customizing.html

此处已有使用border-image 的示例:https://doc.qt.io/qt-5/stylesheet-examples.html#qpushbutton-and-images

我个人喜欢 SVG,所以这里有一个我快速创建的示例。这是使用 image 属性覆盖括号的透明、可缩放的 SVG。 (请注意,要将 CSS 应用于按钮,可能需要覆盖 native 边框,就像我在示例中所做的那样。)

enter image description here

// Requires Qt svg module, as in `QT += svg`.
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QDialog d;
d.setLayout(new QVBoxLayout);
QToolBar* tb = new QToolBar(&d);
tb->setIconSize(QSize(48, 48));
d.layout()->addWidget(tb);

QIcon icon("./so-icon.svg");
for (int i=0; i < 4; ++i)
tb->addAction(icon, QStringLiteral("Action %1").arg(i));

QToolButton *btn = qobject_cast<QToolButton*>(tb->widgetForAction(tb->actions().at(1)));
btn->setStyleSheet(QStringLiteral(
"QToolButton {"
"border: none;" // to override some styles like WindowsVista and Macintosh
"image: url(./brackets.svg);"
"}"
));

return d.exec();
}

}

https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg

方括号.svg

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
<path fill="#047F18" d="M12,44H4V4h8V0H0v48h12V44z"/>
<path fill="#047F18" d="M36,4h8v40h-8v4h12V0H36V4z"/>
</svg>

关于qt - 如何使用 qt 样式表只自定义部分 qwidget 边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58458323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com