【Qt5开发及实例】17、一个对话框的坐标参数显示

一个对话框的坐标参数显示

介绍

这个是为了得到对话框的长宽,各个点的坐标,相对坐标,相对父窗口的坐标,相对在桌面的坐标

代码

geometry.h

/**
* 书本:【Qt5开发及实例】
* 功能:显示对话框的坐标信息,参数信息
* 文件:geometry.cpp
* 时间:2015年1月20日20:19:35
* 作者:cutter_point
*/
#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;     //表示对话框的最开始的x坐标横向----->
  QLabel *xValueLabel;
  QLabel *yLabel;   //表示对话框的最开始的y坐标纵向下箭头
  QLabel *yValueLabel;
  QLabel *FrmLabel;   //综合位置和对话框的宽和长
  QLabel *FrmValueLabel;
  QLabel *posLabel;   //位置坐标,就是x,y
  QLabel *posValueLabel;
  QLabel *geoLabel;   //x,y和对话框不包含标题的大小,长宽
  QLabel *geoValueLabel;
  QLabel *widthLabel;   //里面的宽
  QLabel *widthValueLabel;
  QLabel *heightLabel;      //里面的长
  QLabel *heightValueLabel;
  QLabel *rectLabel;      //起始的0,0和里面的长和宽
  QLabel *rectValueLabel;
  QLabel *sizeLabel;        //里面的长宽
  QLabel *sizeValueLabel;
  QGridLayout *mainLayout;    //网格布局

protected:
  void moveEvent(QMoveEvent *);     //对话框移动的话,坐标要改变
  void resizeEvent(QResizeEvent *);     //对话框大小改变的话

};

#endif // GEOMETRY_H

geometry.cpp

/**
* 书本:【Qt5开发及实例】
* 功能:显示对话框的坐标信息,参数信息
* 文件:geometry.cpp
* 时间:2015年1月20日20:19:35
* 作者:cutter_point
*/
#include "geometry.h"

Geometry::Geometry(QWidget *parent)   //构造函数
  : QDialog(parent)
{
  setWindowTitle(tr("cutter_point Geometry"));
  xLabel = new QLabel(tr("x():"));    //坐标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;
  widthLabel =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(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()) + ", " + tempStr34.setNum(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()
{

}

main.cpp

#include "geometry.h"
#include <QApplication>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  Geometry w;
  w.show();

  return a.exec();
}

运行结果

好吧,我发现照片超过1M就无法上传了,666666,我记得好像是2M的,怪我太天真???

时间: 2024-08-11 22:37:13

【Qt5开发及实例】17、一个对话框的坐标参数显示的相关文章

【Qt5开发及实例】8、各种对话框!!

1.标准文件对话框 就是点击这个按钮就会打开文件的对话框 具体的实现是: 头文件dialog.h: #include <QDialog> #include <QLineEdit> #include <QGridLayout> //网格布局 #include <QPushButton> #include <iostream> #include "inputdlg.h" #include "msgboxdlg.h&quo

【Qt5开发及实例】16、实现一个简单的文本编辑器(over)

实现一个简单的文本编辑器 其他具体的代码基础看前面:http://blog.csdn.net/cutter_point/article/details/42839071 1.功能 这个程序又添加了文本编辑功能,什么加粗,斜体,下划线,字体设置,字号设置,文字排版,段落对齐功能. 2.代码全展示 头文件 showwidget.h /** * 书本:[Qt5开发及实例] * 功能:实现一个简单的文本编辑器 * 文件:showwidget.h * 时间:2015年1月18日10:03:21 * 作者:

【Qt5开发及实例】12、实现一个简单的文本编辑器1

showwidget.h /** * 书本:[Qt5开发及实例] * 功能:实现一个简单的文本编辑器 * 文件:showwidget.h * 时间:2015年1月18日10:03:21 * 作者:cutter_point */ #ifndef SHOWWIDGET_H #define SHOWWIDGET_H #include <QWidget> #include <QLabel> #include <QTextEdit> #include <QImage>

【Qt5开发及实例】9、一个QQ界面

这个程序主要是为了学习一下工具盒类,这里使用了3个工具盒然后添加到整个界面上, 分别是:好友(good friend), 陌生人(do not remember), 黑名单(black items) 哈哈,原谅我这不咋地的英语,懂我就好. 实现图: 代码: drawer.h /** * 书本:[Qt5开发及实例] * 功能:实现一个自己的QQ界面 * 文件:drawer.cpp * 时间:2015年1月2日11:01:12 * 作者:cutter_point */ #ifndef DRAWER_

【Qt5开发及实例】18、图形修饰小工具

图形修饰小工具 无力吐槽,这是我第三遍写这个了,到底是个什么意思???我只要一贴代码,浏览器直接崩溃,呵呵了,我也是,我现在只要写完一段字我就保存,尼玛在掉我就不写了,写到word里面,再贴上来. 效果 左边图形展示界面 paintarea.h /** * 书本:[Qt5开发及实例] * 功能:实现绘画各种图形 * 文件:paintarea.h * 时间:2015年1月21日16:59:25 * 作者:cutter_point */ #ifndef PAINTAREA_H #define PAI

【Qt5开发及实例】27、获得文件的信息

fileinfo.h /** * 书本:[Qt5开发及实例] * 功能:获得文件的信息 * 文件:fileinfo.h * 时间:2015年2月4日17:23:38 * 作者:cutter_point */ #ifndef FILEINFO_H #define FILEINFO_H #include <QDialog> #include <QLabel> #include <QPushButton> #include <QLineEdit> #include

【Qt5开发及实例】24、数据柱形图显示

数据柱形图显示 1.我们首先把这个这个视图的表格部分表示出来 mainwindow.h /** * 书本:[Qt5开发及实例] * 功能:数据柱形图显示,这个类是表格显示 * 文件:mainwindow.h * 时间:2015年1月28日18:50:54 * 作者:cutter_point */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStandardItemModel>

【Qt5开发及实例】25、实现代理的功能

实现代理的功能 在Qt里面也有MVC,那就是视图,模型,代理,后面我们再开一章,好好来学习一下Qt的MVC吧! main.cpp /** * 书本:[Qt5开发及实例] * 功能:实现代理的功能 * 文件:main.cpp * 时间:2015年1月29日20:53:04 * 作者:cutter_point */ #include <QApplication> #include <QStandardItemModel> #include <QTableView> //#i

Qt5主窗体程序: 文本编辑器的实现(Qt5开发及实例)

下面的程序出自<Qt5开发及实例>陆文周. 效果图: 程序是一个文本编辑器的实例,主界面如下: 程序中的源文件和头文件: 源代码: 文件main.cpp的源代码: #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); QFont font("楷体",15); a.setFont