2

考虑以下简单示例:

面积.hh

#pragma once

class Area;

#include <QScrollArea>

class Area : public QScrollArea {

    Q_OBJECT

public:

    Area (QWidget *_parent = 0);
};

区域.cc

#include "main.hh"
#include "Area.hh"

#include <QLabel>

Area::Area (QWidget *_parent) :
    QScrollArea (_parent)
{
    QLabel *label = new QLabel ("Show me please");
    setWidget (label);
}

此滚动区域应在其中显示一个标签。如果您只是创建一个 Area 对象并像这样显示它,它会做得很好:

Area *area = new Area();
area->show();

但是,如果您QScrollArea使用 Qt Creator 添加一个并将其提升到Area类,那么它内部什么都没有显示,也没有滚动条。我该怎么做才能正确显示它?

4

1 回答 1

2

Qt Designer 在 中添加一个空小部件QScrollArea,覆盖你的。

为防止这种情况,请使用 baseQWidget而不是 a QScrollArea,并将该小部件提升为Area类。Qt 的 Ui 编译器不会将其视为 a QScrollArea,因此它不会再生成对的调用setWidget

于 2012-04-13T14:23:45.810 回答