c++ - Qt 中的背景乘以而不是适应窗口大小

标签 c++ css image qt

如标题所示,我尝试使用以下代码将背景图像调整为窗口大小:

QPixmap bkgnd(":/new/prefix1/bkgrnd.png");
bkgnd = bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);

QPalette palette;

palette.setBrush(QPalette::Background, bkgnd);
this->setPalette(palette);

但是图像会相乘并粘贴在一起,而不是调整到窗口大小。

Original size window Resized image

最佳答案

如果您希望图像始终适合表格,您应该在小部件的调整大小事件中编写代码。为此,您应该覆盖小部件的调整大小事件。将此行添加到 *.hpp 文件

protected:
    void resizeEvent(QResizeEvent* evt) override;

然后,在 resizeEvent 方法中编写代码。

void MainWindow::resizeEvent(QResizeEvent* evt)
{
    QPixmap bkgnd(":/new/prefix1/bkgrnd.png");
    bkgnd = bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);

    QPalette palette;

    palette.setBrush(QPalette::Background, bkgnd);
    this->setPalette(palette);

    QMainWindow::resizeEvent(evt); // call inherited implementation
}

为了提高性能,不要在调整大小事件中创建'QPixmap bkgnd'。

关于c++ - Qt 中的背景乘以而不是适应窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42472749/

相关文章:

php - 通过 wp_handle_upload 删除未放入上传文件夹的图像

html - 如何使用 Bootstrap 将图像放在图像上

android - 如何解决我的应用程序中的图像适配器错误?

c++ - 在 Windows 上重建 hhvm

c++ - 检查文件是否具有可执行权限windows c++

css - 这种字体是如何实现雕刻的?

html - 分层对象 ||谷歌地图和导航栏

c++ - 如何引用类的静态私有(private)对象?

c++ - POS 终端应用程序开发 - SDK、编程语言、模式、IDE

html - 弄清楚过渡