5

a に aと a の順にQLabela と a の短い文を挿入しました。私のメイン ウィンドウは、ユーザーのデスクトップの 70% です。QLineEditQPushButtonQVBoxLayout

私の問題は、ラベルが親ウィンドウの高さのほぼ 80% まで拡大しQLineEdit、「QButton」が下部で圧迫されていることです。

これを解決する方法を見つけました。コンテンツのないラベルをさらに挿入しましたが、これは最善の解決策ではありません。私に何ができる?

私も試しQFormLayoutましたが、私のニーズには合いません。ウィジェットを縦に並べるのが好きです。私は多くの方法を試しましQSizePolicyたが、うまくいきませんでした。

4

1 に答える 1

7

あなたが探しているのは、スペーサーアイテムを追加することだと思います。addStretchすべてのウィジェットをレイアウトに追加した後、レイアウトで使用してみてください。

例:

#include <QtGui>

class W: public QWidget
{
    Q_OBJECT

    public:
        W(bool spacer, QWidget *parent = 0)
            : QWidget(parent)
        {
            QLabel *l = new QLabel("Hello!");
            QLineEdit *e = new QLineEdit;
            QPushButton *p = new QPushButton("Go");

            QVBoxLayout *vl = new QVBoxLayout;
            vl->addWidget(l);
            vl->addWidget(e);
            vl->addWidget(p);

            if (spacer)
                vl->addStretch();

            setLayout(vl);

            resize(200, 400);
        }
};

レンダリング:

ここに画像の説明を入力

(左は伸ばしません、右は伸ばします。)

于 2013-05-01T08:07:08.853 に答える