我使用 QLabel 向用户显示更大、动态变化的 QPixmap 的内容。根据可用空间使这个标签更小/更大会很好。屏幕尺寸并不总是像 QPixmap 一样大。
如何修改 QLabel 的 QSizePolicy
和 sizeHint()
来调整 QPixmap 的大小,同时保持原始 QPixmap 的纵横比?
我无法修改 QLabel 的 sizeHint()
,将 minimumSize()
设置为零无济于事。在 QLabel 上设置 hasScaledContents()
允许增长,但会破坏纵横比...
子类化 QLabel 确实有帮助,但是这个解决方案为一个简单的问题添加了太多代码......
任何巧妙的提示如何在没有子类的情况下完成这个?
最佳答案
为了更改标签尺寸,您可以为标签选择适当的尺寸策略,例如展开或最小展开。
您可以通过在每次更改时保持其纵横比来缩放像素图:
QPixmap p; // load pixmap
// get label dimensions
int w = label->width();
int h = label->height();
// set a scaled pixmap to a w x h window keeping its aspect ratio
label->setPixmap(p.scaled(w,h,Qt::KeepAspectRatio));
您应该在两个地方添加此代码:
- 像素图更新时
- 在包含标签的小部件的
resizeEvent
中
关于c++ - Qt:调整包含 QPixmap 的 QLabel 的大小,同时保持其纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8211982/