在标题中,我试图使用以下代码将背景图像调整为窗口大小:
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);
但是图像会相乘并相互粘贴,而不是调整到窗口大小。
答案 0 :(得分:1)
如果您希望图像始终适合表单,则应在widget的resize事件中编写代码。为此,您应该覆盖小部件的resize事件。将此行添加到* .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
}
要提高性能,请不要在resize事件中创建'QPixmap bkgnd'。