2016-03-02 206 views
3

我创建了一个QFrame并添加含有QSizeGrip来调整该QFrame的布局。设计QFrame和QSizeGrip

下面是我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

回答

3

可以使用样式表自定义QSizeGrip。 下面一个例子:Customizing QSizeGrip

这里Qt的样式表文件:Qt Style Sheets

你的情况,你可以添加这行代码:

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

以类似的方式,你可以自定义QFrame背景,设置一个将要重复的图像。见Customizing QFrameList of properties

EDIT

另一种方法是子类QSizeGrip和重新实现paintEvent()方法(也许sizeHint()取决于图标大小)。这里的一个例子Analog Clock Example

+0

这个工作很棒,但如果我在该布局中添加一个按钮然后添加sizegrip,该图标将消失。 (如果我不使用图像,默认sizegrip图标正常显示)。另外,你对QFrame背景有什么想法。非常感谢你。 – user2652023

+0

对于QFrame背景,请参阅答案中的我的编辑。对于图标,不确定,但也尝试在样式表中设置QSizeGrip的大小,如链接示例中所示(Customizing QSizeGrip) – Fabio

+0

仍然有图标错误。关于QFrame我想我会用QPainter来绘制。如果您有任何进一步的建议,请让我知道。谢谢。 – user2652023