设计QFrame和QSizeGrip

时间:2016-03-02 04:43:52

标签: c++ qt

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

这是 my code.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有一个背景,如下所示:

enter image description here

此外,有没有办法自定义QSizeGrip的图标大小调整(让它更清楚......)。

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用样式表自定义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