2016-03-02 22 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