setBackground(i-6ren">
gpt4 book ai didi

Qt QMdiArea 背景上的图像

转载 作者:行者123 更新时间:2023-12-03 21:27:51 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com