Image Qt QMdiArea背景上的图像

Image Qt QMdiArea背景上的图像,image,qt,qt4,qmdiarea,Image,Qt,Qt4,Qmdiarea,Qt开发者! 有没有办法像下图一样在我的midArea背景上添加图像 我知道我可以用这样的东西 QImage img("logo.jpg"); mdiArea->setBackground(img); 但我不需要在背景上重复我的图像 谢谢大家! 正如我在上面的评论中所说,您可以对QMdiArea进行子分类,覆盖其paintEvent()函数,并自己绘制徽标图像(在右下角)。下面是实现上述想法的示例代码: class MdiArea : public QMdiArea { public:

Qt开发者! 有没有办法像下图一样在我的midArea背景上添加图像

我知道我可以用这样的东西

QImage img("logo.jpg");
mdiArea->setBackground(img);
但我不需要在背景上重复我的图像


谢谢大家!

正如我在上面的评论中所说,您可以对
QMdiArea
进行子分类,覆盖其
paintEvent()
函数,并自己绘制徽标图像(在右下角)。下面是实现上述想法的示例代码:

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;
};
最后使用主窗口中的自定义mdi区域:

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

也许你可以尝试覆盖
QMdiArea::paintEvent()
并在那里绘制你的徽标pixmap?@vahancho哦,好吧,你能用它展示一些例子吗?当然,请在下面我发布的答案中找到工作示例。哦,太好了,谢谢!有没有不编辑原始qt模块代码的方法?因为我得到了免费版本,据我所知,我不打算编辑这样的内容things@DanilGholtsman,实际上Qt源代码中没有任何更改。我发布的示例代码应该是您自己的代码,您可以不受任何限制地执行此操作。哦,我明白了!有人在说!我第一次看到它时有点心烦意乱,很抱歉问了一个愚蠢的问题。