Qt 边框、透明度和填充。如何创造这种效果?
Posted
技术标签:
【中文标题】Qt 边框、透明度和填充。如何创造这种效果?【英文标题】:Qt Border, transparency, and padding. How to create this effect? 【发布时间】:2013-06-14 12:53:45 【问题描述】:我想添加一个右上角的按钮来关闭浮动在其他小部件上的小部件。 我不能让它浮出面板的内容。
我尝试了几种方法。拥有背景通常不起作用。我不能让小部件漂浮在该背景内的框外。
这样做是这样的:
border-style: solid;
border-width: 12px 24px 37px 25px;
border-image: url(:/resources/images/panel_border_corner_btn.png) 12 24 37 25 fill repeat;
margin: 0px;
padding: 0px;
所以我尝试让顶部和右侧透明的 10 像素背景,像这样(你不会看到透明区域,但如果你下载它,你会看到它)。
所以我添加了带有按钮背景的小部件:
但无论如何我不能让它溢出边界。用 -20 修改边距会削减它,使用填充 -20 不起作用......
【问题讨论】:
【参考方案1】:这是我的例子:
FloatPanel::FloatPanel(QWidget *parent) :
QWidget(parent)
setAutoFillBackground(true);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->setContentsMargins(5, 15, 15, 5);
layout->addWidget(new QLabel("some text"));
layout->addWidget(new QPushButton("some button"));
void
FloatPanel::paintEvent(QPaintEvent *event)
Q_UNUSED(event);
QPainter painter(this);
painter.setPen(Qt::black);
painter.setBrush(Qt::white);
painter.drawRect(0, 10, width() - 12, height() - 11);
painter.drawPixmap(width() - 38, 0, QPixmap(":/close.png"));
结果如下:
【讨论】:
感谢您的示例。但这显然不是我想要的!我需要它是一个按钮,一个容器内的小部件。但它必须被取代。你看到面板的图像了吗?我编辑了文本并添加了带有透明边框的背景。非常感谢。 我的意思是,我不想使用画家。如果你愿意,我会使用样式表、边距、填充、绝对位置或其他任何东西。理想的做法是像我告诉你的那样设置带边框的透明背景,然后添加按钮,使其位于右侧。 问题仍处于打开状态。答案不是这样! hank,你知道其他解决方案吗?以上是关于Qt 边框、透明度和填充。如何创造这种效果?的主要内容,如果未能解决你的问题,请参考以下文章