2010-02-11 54 views
1

我試圖添加滾動到我修改的拖放示例源。該示例簡單地繪製了幾個可拖動的QLabel小部件。我修改它的方式是創建大量不同長度的小部件。Qt - QScrollArea部件剪輯內容

我做了一個將被main調用的類,它將包含滾動控件,而該控件又包含繪製QLabels的原始控件。這一類的唯一方法是構造函數,這裏是它的實現:

layoutWidget::layoutWidget(QWidget *parent) : QWidget(parent){ 
    QScrollArea *scroll = new QScrollArea(); 
    QVBoxLayout *layout = new QVBoxLayout(); 

    //widget that draws the draggable labels 
    Widget *w = new Widget(); 

    scroll->setWidget(w); 
    scroll->setBackgroundRole(QPalette::Light); 

    layout->addWidget(scroll);  

    setLayout(layout); 
} 

我使用了setMinimumSize()Widget的構造函數。當我運行該程序時,只繪製setMinimumSize()定義的區域內的內容,其餘部分將被刪除。我錯過了什麼嗎?

回答

0

滾動區域內小部件的最小尺寸小於其內容,因此只繪製該區域內的內容。我爲setMinimumSize()使用了較大的值,問題解決了。

1

您的小部件很可能需要將其自身大小調整爲完整大小以顯示其內容。可能發生的情況是,您設置的最小尺寸是它獲得的唯一尺寸,因此它使用該尺寸。我會建議添加一個佈局到小部件,以使其大小動態地根據它的孩子,但我認爲這不會很好用可拖動的內容。

+0

但我不是已經這樣做了嗎? – 2010-02-12 10:09:08

+0

哦,我明白你的意思了。 – 2010-02-12 15:09:28