Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QLabel in the center of a QWidget



  • @
    void MyWidget::AnimatedLogo(QString logotype)
    {

    QMovie *MyLogoMovie = new QMovie(logotype);
    
    MyLogoLabel = new QLabel(this);
    
    MyLogoLabel ->setMovie(MyLogoMovie);
    
    MyLogoMovie->start();
    
    MyLogoLabel->setAlignment(Qt::AlignCenter);
    
    MyLogoLabel >show();
    

    }

    AnimatedLogo(":/mylogo.gif");

    @

    He is not in the center of QWidget, it always is at the top left side.


  • Moderators

    You need to layout the label in the parent widget:

    @
    void MyWidget::AnimatedLogo(QString logotype)
    {
    QMovie *MyLogoMovie = new QMovie(logotype);
    MyLogoLabel = new QLabel();
    MyLogoLabel ->setMovie(MyLogoMovie);
    MyLogoMovie->start();
    MyLogoLabel->setAlignment(Qt::AlignCenter);
    // MyLogoLabel >show(); //this is redundant

    QVBoxLayout* layout = new QVBoxLayout();
    layout->addWidget(MyLogoLabel);
    setLayout(layout);
    

    }
    @

    Btw. identifier names starting with capital letter are usually used for class names not variables.



  • [quote author="Krzysztof Kawa" date="1357229504"]You need to layout the label in the parent widget:

    @
    void MyWidget::AnimatedLogo(QString logotype)
    {
    QMovie *MyLogoMovie = new QMovie(logotype);
    MyLogoLabel = new QLabel();
    MyLogoLabel ->setMovie(MyLogoMovie);
    MyLogoMovie->start();
    MyLogoLabel->setAlignment(Qt::AlignCenter);
    // MyLogoLabel >show(); //this is redundant

    QVBoxLayout* layout = new QVBoxLayout();
    layout->addWidget(MyLogoLabel);
    setLayout(layout);
    

    }
    @

    Btw. identifier names starting with capital letter are usually used for class names not variables.[/quote]

    THANK YOU!

    bq. Btw. identifier names starting with capital letter are usually used for class names not variables.

    Thanks for the tip.


Log in to reply