2010-02-11 62 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