有关Qt显示图片的问题

有关Qt显示图片的问题

问题描述

想设置图片随着Qt界面的变化而改变大小

解决过程

  1. Qt显示设置成固定大小
    问题:看起来很别扭
  2. 将最大化和最小化分别设定一个固定值
    问题:随意改变大小的时候比较难受,在最大化时,由于固定值过大,无法最小化
  3. 继续查找解决方案,最后得到办法

解决办法

下面4步在qt Designer中完成
1.让显示图片的QLable的所在的框中使用网格布局,布局中的其他空间可以固定大小;
2.让显示在QLabel中的内容居中显示(Alignment的Center属性)
3.设置合适的margin值
4.将该选项打勾setScaledContents
下面步骤在代码中完成

QPixmap *pixmap = new QPixmap(":....png");//加载图片
pixmap->scaled(ui->label->size(), Qt::KeepAspectRatio);//设置图片大小
//ui->label->setScaledContents(true);//设置label全填效果(可以在上面的第4步完成)
ui->label->setPixmap(*pixmap);//把图片放到label中,其他控件加载图片思路一样的

至此,问题解决

参考博客

https://blog.csdn.net/qq_39576599/article/details/87966652

https://blog.csdn.net/woshiwangxin0/article/details/78659209?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2

https://blog.csdn.net/sinat_36420785/article/details/61432531?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3

https://blog.csdn.net/akadiao/article/details/96153643

https://blog.csdn.net/linuxweiyh/article/details/76683479

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
循环显示图片时出现闪烁问题可能是因为每次刷新界面时都重新加载了图片资源,导致界面重绘时出现了闪烁现象。为了解决这个问题,你可以尝试使用双缓冲技术。 具体实现方法如下: 1. 创建一个QPixmap对象,用于绘制图片。 2. 在QPixmap对象上绘制图片。 3. 将QPixmap对象绘制到QWidget或QGraphicsView上。 4. 循环执行上述步骤,每次将QPixmap对象绘制到QWidget或QGraphicsView上时,先将其绘制到一个临时的QPixmap对象上,再将临时的QPixmap对象绘制到QWidget或QGraphicsView上,从而实现双缓冲的效果。 示例代码如下: ```cpp #include <QApplication> #include <QWidget> #include <QPainter> #include <QTimer> #include <QPixmap> class MyWidget : public QWidget { public: MyWidget(QWidget *parent = nullptr) : QWidget(parent) { pix = new QPixmap("test.jpg"); timerId = startTimer(50); } ~MyWidget() { delete pix; } protected: void paintEvent(QPaintEvent *event) override { QPainter painter(this); painter.drawPixmap(0, 0, *pix); } void timerEvent(QTimerEvent *event) override { update(); } private: QPixmap *pix; int timerId; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget w; w.show(); return app.exec(); } ``` 在上面的代码中,我们使用QPixmap对象绘制图片,并在QWidget上绘制QPixmap对象。在timerEvent()函数中,我们使用update()方法刷新界面,从而实现循环显示图片的效果,并使用双缓冲技术解决闪烁问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值