我创建了一个 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具有这样的背景:

c++ - 设计QFrame和QSizeGrip-LMLPHP

此外,还有什么方法可以自定义QSizeGrip 的图标大小(使其更加清晰...)。

c++ - 设计QFrame和QSizeGrip-LMLPHP

最佳答案

您可以使用样式表来自定义QSizeGrip。
下面是一个示例:Customizing QSizeGrip

这里是Qt样式表文档:Qt Style Sheets

您可以添加以下代码行:

sizeGrip->setStyleSheet("QSizeGrip { image: url(yourFolder/yourImage.png); }");

您可以通过类似的方式自定义QFrame背景,设置要重复的图像。参见Customizing QFrameList of properties

编辑

另一种方法是将QSizeGrip子类化,然后重新实现paintEvent()方法(还可以根据图标的大小重新定义sizeHint())。这是一个Analog Clock Example示例

10-01 02:35