Qt QMdiArea 背景上的图像

标签 image qt qt4 qmdiarea

Qt 开发者! 有没有办法在我的 midArea 背景上添加图像,如下图所示?

enter image description here

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

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

但我不需要在背景上重复我的图像。

谢谢!

最佳答案

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

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

关于Qt QMdiArea 背景上的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19852594/

相关文章:

C Imlib 用 alpha 混合两个图像

c++ - setWindowFlag(Qt::Dialog | Qt::WindowStaysOnTopHint) 不适用于 Centos

c++ - 带有 QCompleter 的 QLineEdit 不会显示带有空文本字段的 QCompleter 弹出菜单

c++ - QT4 qlistview保存手动移动的图标位置,下次使用

jquery - 如何更改悬停时的图像源?

javascript - 将图像缓冲区发送到 node.js tcp 服务器

javascript - 如何通过 javascript 在我的 aspx 页面中设置 img?

c++ - 如何用Eclipse CDT开发QT项目?

qt - 我应该多久在 QT 中设置一次数据库?

Qt4:将 QMainWindow 实例放置在其他 QWidget/QMainWindow 中