QScrollArea resizing QWidgetと同じ問題だと思います
しかし、解決策はありません。それでは、問題を公開しましょう。
- QWidget から継承されたテスト 2:
- 構成 :
- QSpinBox のベクトル
- Qスクロールエリア
- QVBoxLayout
- test2 (QWidget) <- QScrollArea <- QVBoxLayout <- スピンボックス
- 構成 :
- 問題 :
- スクロールバーはありません
- [修正済み] スクロールバーの内側が縮小されて、何も読めない小さなスペースが表示されます (実行中にウィンドウのサイズを変更すると、内側が大きくなって読みやすくなりますが、スクロールバーは表示されません)
問題は単一のソースから発生していると思います :: サイズのヒントとレイアウト ( http://qt-project.org/doc/qt-5.1/qtwidgets/qscrollarea.html#details )
2 つ目の問題 (縮小されたウィジェット) は、「c->setSizeConstraint(QLayout::SetMinimumSize);」を設定することで解決できます。
現在、欠落しているスクロールバーの解決策を探しています
ここに私の問題を示すコードがあります:
<c++>
#include <QWidget>
#include <QScrollArea>
#include <QVBoxLayout>
#include <QSpinBox>
class test2 : public QWidget
{
Q_OBJECT
public:
test2(QWidget *parent = 0) :QWidget(parent)
{
b = new QScrollArea(this);
c = new QVBoxLayout;
for (int i = 0; i < 10; i++)
{
a.push_back(new QSpinBox());
c->addWidget(a[i]);
}
c->setSizeConstraint(QLayout::SetMinimumSize);
b->setLayout(c);
b->resize(200, 200);
}
~test2()
{
for (int i = 0; i < 10; i++)
delete a[i];
}
protected:
QVector<QSpinBox*> a;
QScrollArea* b;
QVBoxLayout* c;
};
int main(int argc, char *argv[])
{
///*
QApplication app(argc, argv);
test2 a;
a.show();
return app.exec();//*/
}
編集:: ここで解決策を見つけました: http://qt-project.org/forums/viewthread/295
ここで大量の役に立たないコードを読みたくない場合は、彼がしたこと :: 彼はウィジェット内のレイアウトを歪めました
解決策 :: ScrollBar <- Widget <- Layout からオブジェクトを継承します
ウィジェット <- スクロールバー <- レイアウトの代わりに
しかし、それは回避策であり、実際には解決策ではありません...私が示した例を試してみます。
できます。誰かがより良い解決策を持っていますか??