1

我想添加一个右上角的按钮来关闭浮动在其他小部件上的小部件。我不能让它浮出面板的内容。

在此处输入图像描述

我尝试了几种方法。拥有背景通常不起作用。我不能让小部件漂浮在该背景内的框外。

这样做是这样的:

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 不起作用......

4

1 回答 1

3

这是我的例子:

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"));
 }

这是结果:

在此处输入图像描述

于 2013-06-18T12:45:01.227 回答