QT学习 第一章:基本对话框(3)

使用标准输入框操作系统: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();  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfpdg.html