Qt - QScrollArea小部件剪辑内容

时间:2010-02-11 14:07:25

标签: c++ qt scroll

我正在尝试将滚动添加到我修改的拖放示例源。该示例简单地绘制了几个可拖动的QLabel小部件。我正在修改它,以便创建大量不同长度的小部件。

我创建了一个由main调用的类,它将包含滚动小部件,而这些小部件又包含绘制QLabel的原始小部件。这个类的唯一方法是构造函数,这是它的实现:

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);
}

我在Widget构造函数上使用setMinimumSize()。当我运行程序时,只绘制由setMinimumSize()定义的区域内的内容,其余部分将被剪掉。我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您的小部件很可能需要将自身调整为完整大小才能显示其内容。可能发生的是,您设置的最小尺寸是它获得的唯一尺寸,因此它使用它。我建议在窗口小部件中添加一个布局,使其根据子窗口动态调整大小,但我认为这对于可拖动的内容不会很好。

答案 1 :(得分:0)

滚动区域内小部件的最小尺寸小于其内容,因此仅绘制该区域内的内容。我为setMinimumSize()使用了更大的值,问题解决了。