は、このようなコードを書き直してみてください。
m_scrollArea->setWidgetResizable(true);
QVBoxLayout *vlay = new QVBoxLayout;
StatsWidget *objStatsWidget;
for(int i=0;i<2;i++)
{
objStatsWidget=new StatsWidget(ui->scrollArea_Stats);
vlay->addWidget(objStatsWidget);
}
QWidget *area = new QWidget(m_scrollArea);
area->setLayout(vlay);
m_scrollArea->setWidget(area);
EDIT:私はあなたには、いくつかの時間前にやろうとしているもののようなもの... を作った:member.letの呼び出しとしてQVBoxLayout
でカスタムQWidget
を作成しますこのオブジェクト "widgetList"。その後、私はQWidgetList
ので、このすべてを作っ
...などが...リストとしてあなたのレイアウトを使用して
が 最終的にあなたのスクロール領域のためのウィジェットとしてwidgetListを設定.. は私に知らせてaddWidget
、takeAt
として、あなたが必要なすべてのメソッドを再実装使いやすい十分ではなかったと私は私がここでは省略している何か他のものを必要な。..
私はコードの私の作品を見つけた:
class WidgetList : public QWidget
{
Q_OBJECT
public:
WidgetList(QWidget *parent = 0);
~WidgetList();
void addWidget(QWidget*);
void removeWidget(QWidget*);
QList<QWidget*> getListWidget() const;
QWidget* takeAt(int) const;
int count() const;
private:
QVBoxLayout* layout_;
};
た.cpp
WidgetList::WidgetList(QWidget *parent)
: /**/QWidget(parent)
/**/,layout_(new QVBoxLayout(this))
{
this->setLayout(layout_);
}
void WidgetList::removeWidget(QWidget* widget)
{
layout_->removeWidget(widget);
}
void WidgetList::addWidget(QWidget* widget)
{
layout_->addWidget(widget);
}
QWidget* WidgetList::takeAt(int index) const
{
return layout_->takeAt(index)->widget();
}
int WidgetList::count() const
{
return layout_->count();
}
これは、カスタムウィジェットを挿入するためのレイアウトを使用して新しいウィジェットをだろう... はその後、私はQScrollArea
のウィジェットとしてwidgetList
を置く:
EDIT ..
QScrollArea* scrollArea = new QScrollArea;
widgetList* list = new widgetList(scrollArea);
scrollArea->setWidget(list);
すべては私の作品2 :前のコードでうまく動作するメインを投稿します。
QScrollArea* scroll = new QScrollArea;
WidgetList* w = new WidgetList(scroll);
QLabel * label = new QLabel("Label1");
QLabel* label2 = new QLabel("label2");
QTableWidget* table = new QTableWidget(10,10);
w->addWidget(label);
w->addWidget(label2);
w->addWidget(table);
scroll->setWidget(w);
scroll->setWidgetResizable(true);
scroll->show();
テーブルをウィジェットに追加するコードを追加してくださいそれを行うにはいくつかの方法があり、どちらを使用しているのかはわかりません。 –
ウィジェットを表示するにはVBoxLayoutを取る必要がありますか? – abhishek
実際の問題は、あなたのウィジェットが必要なサイズにリサイズされないので、一度に3つのテーブル(さらに既存のもの)をすべて見ることができるということでしょうか? –