QT位置相关函数

程序及各位置函数说明

程序

//.h
#ifndef GEOMETRY_H
#define GEOMETRY_H

#include <QDialog>
#include <QLabel>
#include <QGridLayout>

class Geometry : public QDialog
{
    Q_OBJECT

public:
    Geometry(QWidget *parent = 0);
    ~Geometry();
    void updateLabel();
private:
    QLabel *xlabel;
    QLabel *xValuelabel;
    QLabel *ylabel;
    QLabel *yValuelabel;
    QLabel *Frmlabel;
    QLabel *FrmValuelabel;
    QLabel *poslabel;
    QLabel *posValuelabel;
    QLabel *geolabel;
    QLabel *geoValuelabel;
    QLabel *widthlabel;
    QLabel *widthValuelabel;
    QLabel *heightlabel;
    QLabel *heightValuelabel;
    QLabel *rectlabel;
    QLabel *rectValuelabel;
    QLabel *sizelabel;
    QLabel *sizeValuelabel;
    QGridLayout *mainLayout;
protected:
    void moveEvent(QMoveEvent *);
    void resizeEvent(QResizeEvent *);
};

#endif // GEOMETRY_H

//.cpp
#include "geometry.h"

Geometry::Geometry(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle("Geometry");
    xlabel=new QLabel("x():");
    xValuelabel=new QLabel;
    ylabel=new QLabel("y():");
    yValuelabel=new QLabel;
    Frmlabel=new QLabel("Frame():");
    FrmValuelabel=new QLabel;
    poslabel=new QLabel("pos():");
    posValuelabel=new QLabel;
    geolabel=new QLabel("geometry():");
    geoValuelabel=new QLabel;
    widthlabel=new QLabel("width():");
    widthValuelabel=new QLabel;
    heightlabel=new QLabel("height():");
    heightValuelabel=new QLabel;
    rectlabel=new QLabel("rect():");
    rectValuelabel=new QLabel;
    sizelabel=new QLabel("size():");
    sizeValuelabel=new QLabel;
    mainLayout=new QGridLayout(this);
    mainLayout->addWidget(xlabel,0,0);
    mainLayout->addWidget(xValuelabel,0,1);
    mainLayout->addWidget(ylabel,1,0);
    mainLayout->addWidget(yValuelabel,1,1);
    mainLayout->addWidget(poslabel,2,0);
    mainLayout->addWidget(posValuelabel,2,1);
    mainLayout->addWidget(Frmlabel,3,0);
    mainLayout->addWidget(FrmValuelabel,3,1);
    mainLayout->addWidget(geolabel,4,0);
    mainLayout->addWidget(geoValuelabel,4,1);
    mainLayout->addWidget(widthlabel,5,0);
    mainLayout->addWidget(widthValuelabel,5,1);
    mainLayout->addWidget(heightlabel,6,0);
    mainLayout->addWidget(heightValuelabel,6,1);
    mainLayout->addWidget(rectlabel,7,0);
    mainLayout->addWidget(rectValuelabel,7,1);
    mainLayout->addWidget(sizelabel,8,0);
    mainLayout->addWidget(sizeValuelabel,8,1);
    updateLabel();
}

Geometry::~Geometry()
{

}

void Geometry::updateLabel()
{
    //frameGeometry()获得整个窗体的左上定点和长与高
    QString xStr;//获得x()函数的结果并显示,获得整个窗体的左上角坐标
    xValuelabel->setText(xStr.setNum(x()));
    QString yStr;//获得y()函数的结果并显示,获得整个窗体的左上角坐标
    yValuelabel->setText(yStr.setNum(y()));
    QString frameStr;
    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;
    QString tempStr11,tempStr12;
    positionStr=tempStr11.setNum(pos().x())+","+tempStr12.setNum(pos().y());//pos()函数获得整个窗口的左上角坐标
    posValuelabel->setText(positionStr);
    //geometry()获得获得窗体内中央区域左上角的坐标和长于宽,左上角坐标相对于主窗体
    QString geoStr;
    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()));
    //rect()函数获得中央区域的坐标和长与宽//左上角坐标为(0,0)
    QString rectStr;
    QString tempStr31,tempStr32,tempStr33,tempStr34;
    rectStr=tempStr31.setNum(rect().x())+","+tempStr32.setNum(rect().y())+","+tempStr33.setNum(rect().width())+","+tempStr34.setNum(rect().height());
    rectValuelabel->setText(rectStr);
    //size()函数获得中央区域的长与宽
    QString sizeStr;
    QString tempStr41,tempStr42;
    sizeStr=tempStr41.setNum(size().width())+","+tempStr42.setNum(size().height());
    sizeValuelabel->setText(sizeStr);
}

void Geometry::moveEvent(QMoveEvent *)//窗体移动时改变label显示
{
    updateLabel();
}

void Geometry::resizeEvent(QResizeEvent *)//窗体大小改变时改变label显示
{
    updateLabel();
}

效果展示

在这里插入图片描述

发布了31 篇原创文章 · 获赞 3 · 访问量 287

猜你喜欢

转载自blog.csdn.net/weixin_44011306/article/details/105395475