Question

Développeurs QT! Y a-t-il un moyen d'ajouter une image sur l'arrière-plan de mon Midarea comme sur l'image ci-dessous?

enter image description here

Je sais que je peux utiliser quelque chose comme ça

QImage img("logo.jpg");
mdiArea->setBackground(img);

Mais je n'ai pas besoin de répétition de mon image en arrière-plan.

Merci!

Était-ce utile?

La solution

Comme je l'ai dit dans mon commentaire ci-dessus, vous pouvez sous-classe le QMdiArea, remplacer son paintEvent() Fonctionne et dessinez vous-même votre image de logo (dans le coin inférieur droit). Voici l'exemple de code qui implémente l'idée mentionnée:

class MdiArea : public QMdiArea
{
public:
    MdiArea(QWidget *parent = 0)
        :
            QMdiArea(parent),
            m_pixmap("logo.jpg")
    {}
protected:
    void paintEvent(QPaintEvent *event)
    {
        QMdiArea::paintEvent(event);

        QPainter painter(viewport());

        // Calculate the logo position - the bottom right corner of the mdi area.
        int x = width() - m_pixmap.width();
        int y = height() - m_pixmap.height();
        painter.drawPixmap(x, y, m_pixmap);
    }
private:
    // Store the logo image.
    QPixmap m_pixmap;
};

Et enfin utiliser la zone MDI personnalisée dans la fenêtre principale:

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

    QMainWindow mainWindow;
    QMdiArea *mdiArea = new MdiArea(&mainWindow);
    mainWindow.setCentralWidget(mdiArea);
    mainWindow.show();

    return app.exec();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top