20

qwidget W 内に qlabel L があります。L は垂直方向と水平方向に配置されています。W のサイズを変更すると、L が中央に配置されません。

これは期待されていますか?L を再び中央に配置するための適切な実装は何ですか?

4

1 に答える 1

35

QLabel::setAlignmentQLabelを呼び出して a 内のテキストを整列させることは、私にとって期待どおりに機能します。 おそらく、ラベルをレイアウトに追加するのを忘れているかもしれません (ウィジェットのサイズが変更されると、ラベルのサイズが自動的に変更されます)。レイアウト管理も参照してください。最小限の例:

#include <QApplication>
#include <QHBoxLayout>
#include <QLabel>
#include <QWidget>

int main(int argc, char* argv[]) {
    QApplication app(argc, argv);

    QLabel* label=new QLabel("Hello World!");
    label->setAlignment(Qt::AlignCenter);

    QWidget* widget=new QWidget;

    // create horizontal layout
    QHBoxLayout* layout=new QHBoxLayout;
    // and add label to it
    layout->addWidget(label);
    // set layout to widget
    widget->setLayout(layout);

    widget->show();

    return app.exec();
}
于 2012-03-22T06:01:30.083 に答える