QT界面中各部分位置的获取以及图片的操作

1、界面位置介绍
在这里插入图片描述

  • x()、y()和pos()函数的作用都是获得整个窗体左上角的坐标位置。
  • frameGeometry()与geometry()相对应。frameGeometry()是获得整个窗体的左上顶点和长、宽值,而geometry()函数获得的是窗体内中央区域的左上顶点坐标及长、宽值。
  • 直接调用width()和height()函数获得的是中央区域的长、宽值。
  • rect()、size()函数获得的结果也都是对于窗体的中央区域而言的。
    size()获取的是窗口中央区域的长、宽值
    rect()和geometry()相同,返回一个QRect对象,两个的长、宽值是相同的,只是顶点坐标值不一样,geometry()获取的是坐上顶点坐标是相对父窗口而言的坐标,rect()获取的左上顶点坐标始终是(0, 0)。

示例代码:

QString xStr;                      	//获得x()函数的结果并显示
xValueLabel->setText(xStr.setNum(x()));
QString yStr;                      	//获得y()函数的结果并显示
yValueLabel->setText(yStr.setNum(y()));
QString frameStr;                   //获得frameGeometry()函数的结果并显示
QString tempStr1,tempStr2,tempStr3,tempStr4;
frameStr = tempStr1.setNum(frameGeometry().x())+","+
           tempStr2.setNum(frameGeometry().y())+","+
           tempStr3.setNum(frameGeometry().width())+","+
           tempStr4.setNum(frameGeometry().height());
FrmValueLabel->setText(frameStr);
QString positionStr;            	//获得pos()函数的结果并显示
QString tempStr11,tempStr12;
positionStr =tempStr11.setNum(pos().x())+","+
             tempStr12.setNum(pos().y());
posValueLabel->setText(positionStr);
QString geoStr;               		//获得geometry()函数的结果并显示
QString tempStr21,tempStr22,tempStr23,tempStr24;
geoStr =tempStr21.setNum(geometry().x())+","+
        tempStr22.setNum(geometry().y())+","+
        tempStr23.setNum(geometry().width())+","+
        tempStr24.setNum(geometry().height());
geoValueLabel->setText(geoStr);
QString wStr,hStr;                  //获得width()、height()函数的结果并显示
widthValueLabel->setText(wStr.setNum(width()));
heightValueLabel->setText(hStr.setNum(height()));
QString rectStr;                    //获得rect()函数的结果并显示
QString tempStr31,tempStr32,tempStr33,tempStr34;
rectStr =tempStr31.setNum(rect().x())+","+
         tempStr32.setNum(rect().y())+","+
         tempStr33.setNum(/*rect().width()*/width())+","+
         tempStr34.setNum(height()/*rect().height()*/);
rectValueLabel->setText(rectStr);
QString sizeStr;                    //获得size()函数的结果并显示
QString tempStr41,tempStr42;
sizeStr =tempStr41.setNum(size().width())+","+
         tempStr42.setNum(size().height());
sizeValueLabel->setText(sizeStr);

在这里插入图片描述

2、图片的加载、缩放、旋转以及镜像
加载图片

  • 通过QMovie 加载动态图

     QLabel *label =new QLabel();
     QMovie *movie =new QMovie("D:/Project/Qt/firstQT/2.gif");
     label->setMovie(movie);
     movie->start();
     label->show();
    
  • 通过QPixmap 加载图片

     QPixmap pixmap("label.png");
     label->setPixmap(pixmap);
     
     // 也可
     label->setPixmap(QPixmap("label.png"));
     
     label->show();
    
  • 通过QImage 加载图片

     QImage *image= new QImage("./pic1.jpg"); 
     image->load("./pic2.jpg");                   // 更换加载的图片
     label->setPixmap(QPixmap::fromImage(image));
     label->show();
    
  • 直接绘制(暂没研究)

图片的缩放、旋转和镜像

if(img.isNull())                                            // 有效性判断
	return;
QMatrix martix;                                             // 声明一个QMatrix类的实例
martix.scale(2,2);	                                    // 按(2:2)比例放大,缩小的话用小数进行,比如(0.5:0.5)表示缩小1/2
matrix.rotate(90);                                          // 旋转90°
img = img.transformed(martix);// 按QMatrix 矩阵转换
img=img.mirrored(true,false);// 镜像转换(true,false)横向镜像转换,(false,true)纵向镜像转换
//重新设置显示图形
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值