Pergunta

Desenvolvedores QT! Existe uma maneira de adicionar imagem no fundo da minha midareia, como na figura abaixo?

enter image description here

Eu sei que posso usar algo assim

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

Mas não preciso de nenhuma repetição da minha imagem no fundo.

Obrigada!

Foi útil?

Solução

Como eu disse no meu comentário acima, você pode subclasse QMdiArea, substitua seu paintEvent() Funcionar e desenhe sua imagem de logotipo (no canto inferior direito). Aqui está o código de amostra que implementa a ideia mencionada:

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;
};

E, finalmente, use a área MDI personalizada na janela principal:

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();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top