操作系统: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(); }