C++ 设计QFrame和QSizeGrip

C++ 设计QFrame和QSizeGrip,c++,qt,C++,Qt,我创建了一个QFrame,并添加了一个包含QSizeGrip的布局来调整QFrame的大小 这是我的代码。pp: DragWidget::DragWidget(QWidget *parent) : QFrame(parent) { setFrameStyle(QFrame::Sunken | QFrame::StyledPanel); //Set flag to resize setWindowFlags(Qt::SubWindow); QGridLayo

我创建了一个QFrame,并添加了一个包含QSizeGrip的布局来调整QFrame的大小

这是我的代码。pp:

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的背景如下:

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


您可以使用样式表自定义QSizeGrip。 这里有一个例子:

这里是Qt样式表文档:

在您的情况下,可以添加以下代码行:

sizeGrip->setStyleSheet("QSizeGrip { image: url(yourFolder/yourImage.png); }");
以类似的方式,您可以自定义QFrame背景,设置将重复的图像。看到和

编辑


另一种方法是对
QSizeGrip
进行子类化,并重新实现
paintEvent()
方法(也可能是
sizeHint()
,具体取决于图标大小)。这里有一个例子

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