2012-03-22 22 views
14

qwidget Wの内側にqlabel Lを持っています。Lは、垂直方向と水平方向に整列しています。 Wのサイズを変更すると、Lは中央に配置されません。qlabelのセンタリング

これは予想されますか? Lをもう一度中央に配置するのに適した実装は何ですか?

答えて

21

QLabelでテキストを整列するには、QLabel::setAlignmentと呼ぶことで期待通りの効果が得られます。
レイアウトにラベルを追加したくない場合があります(ウィジェットのサイズを変更すると、ラベルのサイズが自動的に変更されます)。 Layout Managementも参照してください。最小限の例:

#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(); 
} 
+1

おかげです。私はあなたの答えを読む前にレイアウト管理をしていませんでした –