17

Qt クリエーターのデザイナーを使用して、垂直レイアウトのさまざまなウィジェットを含むダイアログを作成しました。ウィジェットの 1 つは、ワード ラップが true に設定された QLabel です。QLabel のテキストは、ダイアログが表示される直前に設定されます。

QLabel の最大幅と高さは 16777215 で、垂直サイズ ポリシーはExpandingに設定され、水平サイズ ポリシーはPreferredに設定されています。サイズポリシーを変更してみました。

私が抱えている問題は、テキストが大きい場合、それに応じて QLabel を調整できず、次のようにテキストが切り取られることです: -

ここに画像の説明を入力

テキストを設定した後、ダイアログに対して updateGeometry() を呼び出してみましたが、垂直レイアウトで更新を呼び出してみましたが、違いはないようです。理想的には、テキストに合わせて QLabel を垂直方向に調整する必要があります。

ここで何が欠けているのか誰か教えてもらえますか?

4

2 に答える 2

20

ラベルの垂直サイズ ポリシーを に設定しますQSizePolicy::Minimum。次に、ダイアログのレイアウトの sizeconstraint を に設定しますQLayout::SetMinimumSize。これにより、ダイアログが大きくなり、すべてのコンテンツがその中に収まるようになります。

このようなもの:

QVBoxLayout *layout = new QVBoxLayout;
layout->setSizeConstraint(QLayout::SetMinimumSize);
this->setLayout(layout);
for(int i = 0; i < 5; i++)
{
    QLabel *label = new QLabel;
    label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
    label->setWordWrap(true);
    label->setText("This is a very long text. This is a very long text. This is a very long text. "
                   "This is a very long text. This is a very long text. This is a very long text. This is a very long text. "
                   "This is a very long text. This is a very long text.");
    layout->addWidget(label);
}
于 2013-10-10T11:43:19.480 に答える