Qt5位置相关函数

项目名称:Geometry 
基类:QDialog 
类名:Geometry 
取消“创建界面”

在头文件中声明所需的控件(主要为QLabel类)及所需要的函数。

#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 *widthLable;
    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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

在cpp文件中的构造函数中完成控件的创建以及初始化工作

#include "geometry.h"

Geometry::Geometry(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(tr("Geometry"));
    xLabel=new QLabel(tr("x():"));
    xValueLabel=new QLabel;
    yLabel=new QLabel(tr("y():"));
    yValueLabel=new QLabel;
    FrmLabel = new QLabel(tr("Frame:"));
    FrmValueLabel =new QLabel;
    posLabel =new QLabel(tr("pos():"));
    posValueLabel =new QLabel;
    geoLabel =new QLabel(tr("geometry():"));
    geoValueLabel =new QLabel;
    widthLable =new QLabel(tr("width():"));
    widthValueLabel =new QLabel;
    heightLabel =new QLabel(tr("height():"));
    heightValueLabel =new QLabel;
    rectLabel =new QLabel(tr("rect():"));
    rectValueLabel =new QLabel;
    sizeLabel =new QLabel(tr("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(widthLable,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()
{

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

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;
    QString tempStr41,tempStr42;
    sizeStr=tempStr41.setNum(size().width())+","+
            tempStr42.setNum(size().height());
    sizeValueLabel->setText(sizeStr);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

重定义QWidget的moveEvent()和resizeEvent()函数,响应对话框的移动事件,使得窗体在移动/大小调整时能够同步更新各函数的显示效果

void Geometry::moveEvent(QMoveEvent *)
{
    updateLabel();
}
void Geometry::resizeEvent(QResizeEvent *)
{
    updateLabel();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值