使用标准输入框操作系统:Fedora Linux 14
创建文件夹Geometry,以下是代码(三个文件)
/** Object: Geometry
** Desc: 各类位置信息
** File: main.cpp
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#include <QApplication> // 所有QT图形化应用程序必须包含此文件,它包含了QT图形化应用程序的各种资源、基本设置、控制流及事件处理等。
#include "Geometry.h" // 自定义类头文件
int main(int argc, char *argv[]){
QApplication app(argc, argv);
Geometry *geometry = new Geometry();
geometry->show();
return app.exec();
}
====================================
/** Object: Geometry
** Desc: 各类位置信息
** File: Geometry.h
** Class: Geometry各类位置信息类 头文件
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#ifndef GEOMETRY_H
#define GEOMETRY_H
#include <QtGui> // 包含了QT基本头文件和GUI头文件。GUI:图形用户界面。
class Geometry: public QDialog {
Q_OBJECT // QT对象派生类必须使用的宏。
public:
Geometry(QWidget *parent=0, Qt::WindowFlags f=0); // 构造函数
~Geometry(); // 析构函数
public:
QGridLayout *m_pGLayout; // 表格布局控件
QLabel *m_pLabel1;
QLabel *m_pLabel2;
QLabel *m_pLabel3;
QLabel *m_pLabel4;
QLabel *m_pLabel5;
QLabel *m_pLabel6;
QLabel *m_pLabel7;
QLabel *m_pLabel8;
QLabel *m_pLabel9;
QLabel *m_pLabelX;// 标签控件,显示整个窗体左上角X坐标的值。
QLabel *m_pLabelY;// 标签控件,显示整个窗体左上角Y坐标的值。
QLabel *m_pLabelFrameGeometry;// 标签控件,显示整个窗体左上角XY坐标和宽高的值。
QLabel *m_pLabelPos;// 标签控件,显示整个窗体左上角XY坐标的值。
QLabel *m_pLabelGeometry;// 标签控件,显示整个窗体内部中央区域XY坐标和宽高的值,不含标题栏和四周边框。
QLabel *m_pLabelWidth;// 标签控件,显示整个窗体内部中央区域宽的值,不含标题栏和四周边框。
QLabel *m_pLabelHeight;// 标签控件,显示整个窗体内部中央区域高的值,不含标题栏和四周边框
QLabel *m_pLabelRect;// 标签控件,显示整个窗体内部中央区域XY坐标和宽高的值,不含标题栏和四周边框,XY坐标始终为0,0.
QLabel *m_pLabelSize;// 标签控件,显示整个窗体内部中央区域宽高的值,不含标题栏和四周边框。
private:
void updateLabel();
protected:
void moveEvent(QMoveEvent *); // 重写父类QWidget对话框移动事件。
void resizeEvent(QResizeEvent *);// 重写父类QWidget对话框大小调整事件。
};
#endif // GEOMETRY_H
====================================
/** Object: Geometry
** Desc: 各类位置信息
** File: Geometry.cpp
** Class: Geometry各类位置信息类 源文件
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#include "Geometry.h"
/* 构造函数 */
Geometry::Geometry(QWidget *parent, Qt::WindowFlags f):QDialog(parent, f){
setWindowTitle(tr("Geometry Dialogs"));// 设置对话窗口标题,tr:多语言转换函数。
m_pGLayout = new QGridLayout(this);
m_pLabel1 = new QLabel();
m_pLabel1->setText("x():");
m_pLabel2 = new QLabel();
m_pLabel2->setText("y():");
m_pLabel3 = new QLabel();
m_pLabel3->setText("frameGeometry():");
m_pLabel4 = new QLabel();
m_pLabel4->setText("pos():");
m_pLabel5 = new QLabel();
m_pLabel5->setText("geometry():");
m_pLabel6 = new QLabel();
m_pLabel6->setText("width():");
m_pLabel7 = new QLabel();
m_pLabel7->setText("height():");
m_pLabel8 = new QLabel();
m_pLabel8->setText("rect():");
m_pLabel9 = new QLabel();
m_pLabel9->setText("size():");
m_pLabelX = new QLabel();
m_pLabelY = new QLabel();
m_pLabelFrameGeometry = new QLabel();
m_pLabelPos = new QLabel();
m_pLabelGeometry = new QLabel();
m_pLabelWidth = new QLabel();
m_pLabelHeight = new QLabel();
m_pLabelRect = new QLabel();
m_pLabelSize = new QLabel();
m_pGLayout->addWidget(m_pLabel1, 0, 0); // 布局表格中加入元素,第一行,第一列
m_pGLayout->addWidget(m_pLabel2, 1, 0);
m_pGLayout->addWidget(m_pLabel3, 2, 0);
m_pGLayout->addWidget(m_pLabel4, 3, 0);
m_pGLayout->addWidget(m_pLabel5, 4, 0);
m_pGLayout->addWidget(m_pLabel6, 5, 0);
m_pGLayout->addWidget(m_pLabel7, 6, 0);
m_pGLayout->addWidget(m_pLabel8, 7, 0);
m_pGLayout->addWidget(m_pLabel9, 8, 0);
m_pGLayout->addWidget(m_pLabelX, 0, 1); // 布局表格中加入元素,第一行,第二列
m_pGLayout->addWidget(m_pLabelY, 1, 1);
m_pGLayout->addWidget(m_pLabelFrameGeometry, 2, 1);
m_pGLayout->addWidget(m_pLabelPos, 3, 1);
m_pGLayout->addWidget(m_pLabelGeometry, 4, 1);
m_pGLayout->addWidget(m_pLabelWidth, 5, 1);
m_pGLayout->addWidget(m_pLabelHeight, 6, 1);
m_pGLayout->addWidget(m_pLabelRect, 7, 1);
m_pGLayout->addWidget(m_pLabelSize, 8, 1);
m_pGLayout->setMargin(15); // 设置布局表格四周边空白为15像素。
m_pGLayout->setSpacing(10); // 设置布局表格内部元素间空白为10像素。
}
/* 析构函数 */
Geometry::~Geometry(){
}
/* */
void Geometry::updateLabel(){
QString str;
QString temp;
QString temp1;
QString temp2;
QString temp3;
m_pLabelX->setText(str.setNum(x())); // QWidget::x();
m_pLabelY->setText(str.setNum(x())); // QWidget::y();
str = temp.setNum(frameGeometry().x()) + ", " +
temp1.setNum(frameGeometry().y()) + ", " +
temp2.setNum(frameGeometry().width()) + ", " +
temp3.setNum(frameGeometry().height()); // QWidget::frameGeometry(); return QRect;
m_pLabelFrameGeometry->setText(str);
str = temp.setNum(pos().x()) + ", " +
temp2.setNum(pos().y()); // QWidget::pos(); return QPoint;
m_pLabelPos->setText(str);
str = temp.setNum(geometry().x()) + ", " +
temp1.setNum(geometry().y()) + ", " +
temp2.setNum(geometry().width()) + ", " +
temp3.setNum(geometry().height()); // QWidget::geometry(); return QRect;
m_pLabelGeometry->setText(str);
m_pLabelWidth->setText(str.setNum(width())); // QWidget::width();
m_pLabelHeight->setText(str.setNum(height())); // QWidget::height();
str = temp.setNum(rect().x()) + ", " +
temp1.setNum(rect().y()) + ", " +
temp2.setNum(rect().width()) + ", " +
temp3.setNum(rect().height()); // QWidget::rect(); return QRect;
m_pLabelRect->setText(str);
str = temp.setNum(size().width()) + ", " +
temp1.setNum(size().height()); // QWidget::size(); return QSize;
m_pLabelSize->setText(str);
}
/* */
void Geometry::moveEvent(QMoveEvent *ME){
updateLabel();
}
/* */
void Geometry::resizeEvent(QResizeEvent *RE){
updateLabel();
}