如标题所示,我尝试使用以下代码将背景图像调整为窗口大小:
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);
但是图像会相乘并粘贴在一起,而不是调整到窗口大小。
最佳答案
如果您希望图像始终适合表格,您应该在小部件的调整大小事件中编写代码。为此,您应该覆盖小部件的调整大小事件。将此行添加到 *.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/