Qt笔记——获取位置信息的相关函数

目录

效果图

笔记

手册节选

geometry.cpp

geometry.h

参考


效果图

笔记

x():左上角的坐标(屏幕左上角是远点(0,0))

y():左上角的坐标(屏幕左上角是远点(0,0))

width():客户区的宽度

height():客户区的高度

geometry.x():不包括标题栏、边框的客户区

geometry.y():不包括标题栏、边框的客户区

geometry.width():客户区的宽度

geometry.height():客户区的高度

frameGeometry.x():左上角的坐标

frameGeometry.y():左上角的坐标

frameGeometry.width():窗口真正的宽度(包括边框和标题栏)

frameGeometry.height():窗口真正的高度(包括边框和标题栏)

手册节选

包含在QWidget类中

 

geometry.cpp

#include "geometry.h"

Geometry::Geometry(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(QStringLiteral("对话框位置获取"));
    setWindowIcon(QIcon("icon.png"));
    resize(600,450);//重置大小
    setWindowOpacity(0.9);//设置窗体透明度
    xLabel =new QLabel(QStringLiteral("左上角x坐标x():"));
    xValueLabel =new QLabel;
    yLabel =new QLabel(QStringLiteral("左上角y坐标y():"));
    yValueLabel =new QLabel;
    FrmLabel =new QLabel(QStringLiteral("Frame:"));
    FrmValueLabel =new QLabel;
    posLabel =new QLabel(QStringLiteral("左上角坐标pos():"));
    posValueLabel =new QLabel;
    geoLabel =new QLabel(QStringLiteral("整个窗体大小geometry():"));
    geoValueLabel =new QLabel;
    widthLabel =new QLabel(QStringLiteral("中央区域长width():"));
    widthValueLabel =new QLabel;
    heightLabel =new QLabel(QStringLiteral("中央区域宽height():"));
    heightValueLabel =new QLabel;
    rectLabel =new QLabel(QStringLiteral("rect():"));
    rectValueLabel =new QLabel;
    sizeLabel =new QLabel(QStringLiteral("中央区域大小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();
}

void Geometry::updateLabel()
{
    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);
}

void Geometry::moveEvent(QMoveEvent *)
{
    updateLabel();
}

void Geometry::resizeEvent(QResizeEvent *)
{
    updateLabel();
}

Geometry::~Geometry()
{

}

geometry.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

参考

https://blog.csdn.net/xiaodingqq/article/details/85794397

https://doc.qt.io/qt-5/qwidget.html#geometry-prop

发布了236 篇原创文章 · 获赞 217 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/104072428
今日推荐