• Qt居中显示图片,图过大则出现滚动条(ui方式)的两种方法Label+ScrollArea、GraphicsView


    方式一:Label+ScrollArea

    窗帘与窗户(界面上拖入ScrollArea控件,会默认带个窗帘)

    注意,默认的这个窗帘的 MinimumSize 超过窗户大小,才出现滚动条。(注意是MinimumSize而非Size)

    但是,正常的理解是Size超过窗户就应该出现滚动条。当指定自己的窗帘时,如label,就符合常理了。

    【拖入控件】

    界面上拖入ScrollArea控件、Label控件(注意不要放入ScrollArea控件中,因为它要当窗帘,而不是挂在默认的窗帘上)

    【属性设置】如果觉得label控件太占位置,可以把大小设置为0,0

    scrollArea:不勾选widgetResizable,sizeAdjustPolicy改为AdjustToContents,alignment改为AlignHCenter、AlignVCenter
    label:不勾选scaledContents(图像适应控件),geometry的宽度、高度设置为0(如果觉得label控件太占位置)

    【代码】

        QImage *img=new QImage;
        img->load("D:/竖长.bmp"); //载入图像
        ui->label->setPixmap(QPixmap::fromImage(*img)); //图像显示在label上
        ui->label->adjustSize(); //控件适应图像(注意必须放到上一句代码之后)
        ui->scrollArea->setWidget(ui->label); //设置label为scrollArea的窗帘

     

    方式二:GraphicsView

    一个控件等效于方式一的两个控件。也有种窗帘、窗户的感觉。

    什么属性都不用设置,直接拖控件写代码。

        QGraphicsScene *scene=new QGraphicsScene(); //创建场景,载入图像
        scene->addPixmap(QPixmap("D:/竖长.bmp"));
        ui->graphicsView->setScene(scene); //用控件显示这个场景
  • 相关阅读:
    常见二叉树问题
    leetcode上回溯法的使用
    搜索+回溯
    navicat连接登录windows10本地wsl的数据库
    皇后问题
    拓扑排序
    三路排序算法
    在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceTest.WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素
    WCF异常信息
    C# 制作ZIP压缩包
  • 原文地址:https://www.cnblogs.com/xixixing/p/14293173.html
Copyright © 2020-2023  润新知