设计 QFrame 和 QSizeGrip

3
我创建了一个 QFrame 并添加了一个布局,其中包含一个可以调整大小的 QSizeGrip 以调整该 QFrame 的大小。

这是我的代码:

DragWidget::DragWidget(QWidget *parent)
    : QFrame(parent)
{
    setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
    //Set flag to resize
    setWindowFlags(Qt::SubWindow);
    QGridLayout *layout = new QGridLayout(this);
    layout->setContentsMargins(QMargins());
    layout->setSpacing(0);
    //Add size grip (to resize) to layout
    QSizeGrip * sizeGrip = new QSizeGrip(this);
    layout->addWidget(sizeGrip, 0, 0, 1, 1, Qt::AlignBottom | Qt::AlignRight);
}

我希望能够设计出类似于以下图片的 QFrame 背景:

enter image description here

此外,是否有办法自定义 QSizeGrip 的图标大小(使其更清晰)。

enter image description here

1个回答

3
您可以使用样式表自定义QSizeGrip。 这是一个示例:自定义 QSizeGrip 这里是Qt样式表文档:Qt 样式表 在您的情况下,您可以添加此行代码:
sizeGrip->setStyleSheet("QSizeGrip { image: url(yourFolder/yourImage.png); }");

以类似的方式,您可以自定义QFrame背景,设置一个将被重复的图像。请参见自定义QFrame属性列表 编辑 另一种方法是通过子类化QSizeGrip并重新实现paintEvent()方法(也许还有sizeHint()方法,具体取决于图标大小)。这里是一个例子模拟时钟示例

这个很好用,但如果我在布局中添加一个按钮,然后再添加sizegrip,图标就会消失。(如果我不使用图像,则默认的sizegrip图标正常显示)。另外,您对QFrame背景有什么想法吗?非常感谢您。 - user2652023
关于 QFrame 背景,请查看我的答案中的编辑。关于图标,不确定,但是尝试在样式表中设置 QSizeGrip 的大小,就像链接示例(Customizing QSizeGrip)中所示。 - Fabio
仍然存在图标错误。关于QFrame,我想我会使用QPainter进行绘制。如果您有任何进一步的建议,请告诉我。谢谢。 - user2652023
是的,我使用了QPainter来绘制它。更具体地说,我使用了QPoint和for循环。无论如何,谢谢。 - user2652023

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接