用QPixmap填充QWidget的有效方法
Efficient Way to Fill QWidget With QPixmap
我正在尝试使用它,以便用户可以使用从文件加载的自己的QPixmap
手动设置QWidget
的背景。我的目标是用QPixmap
填充QWidget
,按比例缩放以填充整个QWidget
(即,只要填充了整个QWidget
,部分QPixmap
就可以被边缘切掉)。所以,我不能使用QBrush
来绘制像素图,因为我不想要平铺。
目前,我有两个成员pixmap对象:m_backgroundPixmap
和m_scaledBackgroundPixmap
。在每个resizeEvent
上,我取m_backgroundPixmap
,将其缩放到适合QWidget的正确尺寸,然后将其保存为m_scaledBackgroundPixmap
。在我的paintEvent
中,我简单地使用QPainter::drawPixmap
来绘制缩放的像素图。
还有其他更有效的方法吗?我宁愿不必在每个resizeEvent
上调整像素图的大小,特别是如果resizeEvent
导致窗口边缘拉伸,这意味着它将连续获得许多这样的事件。
您可以使用Qt样式表从文件加载背景图像。
myWidget->setObjectName("myWidget");
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home", tr("Image Files (*.png *.jpg *.bmp)"));
myWidget->setStyleSheet("#myWidget {border-image: url("+fileName+")}");
此外,将CSS样式应用于从QWidget继承的自定义小部件需要以这种方式重新实现paintEvent()
void MyWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
相关文章:
- 在C++中初始化向量映射的最有效方法
- 将此布尔值传递给此函数的最有效方法是什么?
- 比较C++变量的最有效方法
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 存储变量的更有效方法是什么?
- 确保套装新鲜度的有效方法
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 在C++事务之间存储大量字符数据的有效方法
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 检查两个向量是否并行的最有效方法
- 从浮点数中删除小数部分但保留类型的有效方法
- 传递非泛型函数的最有效方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 创建字符串数组的有效方法
- 返回一个引用C++中另一个类对象的对象的有效方法
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 从std::map值中获取密钥的有效方法