2

次の簡単な例を検討してください。

エリア.hh

#pragma once

class Area;

#include <QScrollArea>

class Area : public QScrollArea {

    Q_OBJECT

public:

    Area (QWidget *_parent = 0);
};

Area.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();

ただし、QScrollAreaQt Creator で を追加してAreaクラスに昇格させると、内部には何も表示されず、スクロールバーもありません。ちゃんと見せるにはどうしたらいいですか?

4

1 に答える 1

2

Qt Designer は 内に空のウィジェットを追加し、QScrollAreaあなたのものを上書きします。

これを防ぐには、のQWidget代わりにベースを使用しQScrollArea、そのウィジェットをAreaクラスに昇格させます。Qt の Ui コンパイラはそれを とは見なさQScrollAreaないため、 への呼び出しを生成しsetWidgetなくなります。

于 2012-04-13T14:23:45.810 に答える