您的位置:首页 > 编程语言 > Qt开发

Qt5位置相关函数

2016-09-01 23:55 225 查看




项目名称: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


在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()
{

}


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);
}


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

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: