我创建了一个 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。
下面是一个示例:Customizing QSizeGrip
这里是Qt样式表文档:Qt Style Sheets
您可以添加以下代码行:
sizeGrip->setStyleSheet("QSizeGrip { image: url(yourFolder/yourImage.png); }");
您可以通过类似的方式自定义QFrame背景,设置要重复的图像。参见Customizing QFrame和List of properties
编辑
另一种方法是将
QSizeGrip
子类化,然后重新实现paintEvent()
方法(还可以根据图标的大小重新定义sizeHint()
)。这是一个Analog Clock Example示例