Qt4精彩实例分析笔记--各个位置信息

来源:互联网 发布:阿里云设置mx记录 编辑:程序博客网 时间:2024/06/06 09:02

按照Linux窗口程序设计—Qt4精彩实例分析动手自己弄了一下   一边仿照一边学习

写一写自己的笔记  自己的

代码

mainwindow.cpp


#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){    QFont font("ZYSong18030",12);    QApplication::setFont(font);    QApplication app(argc,argv);    QTranslator translator(0);    translator.load("geometry_zh",".");    app.installTranslator(&translator);    Geometry *g = new Geometry();    g->show();    return app.exec();}Geometry::Geometry(){    setWindowTitle(tr("Geometry"));   //创建所需的各个控件    label1 = new QLabel;    label1->setText("x():");    label2 = new QLabel;    label2->setText("y():");    label3 = new QLabel;    label3->setText("frameGeometry():");    label4 = new QLabel;    label4->setText("pos():");    label5 = new QLabel;    label5->setText("geometry():");    label6 = new QLabel;    label6->setText("width():");    label7 = new QLabel;    label7->setText("height():");    label8 = new QLabel;    label8->setText("rect():");    label9 = new QLabel;    label9->setText("size():");    xLabel = new QLabel;    yLabel = new QLabel;    frameGeoLabel = new QLabel;    posLabel = new QLabel;    geoLabel = new QLabel;    widthLabel = new QLabel;    heightLabel = new QLabel;    rectLabel = new QLabel;    sizeLabel = new QLabel;    //布局    QGridLayout *layout = new QGridLayout(this);    layout->setMargin(20);    layout->setSpacing(10);    int l = 0;    int c = 1;    layout->addWidget(label1,0,l);    layout->addWidget(xLabel,0,c);    layout->addWidget(label2,1,l);    layout->addWidget(yLabel,1,c);    layout->addWidget(label3,2,l);    layout->addWidget(frameGeoLabel,2,c);    layout->addWidget(label4,3,l);    layout->addWidget(posLabel,3,c);    layout->addWidget(label5,4,l);    layout->addWidget(geoLabel,4,c);    layout->addWidget(label6,5,l);    layout->addWidget(widthLabel,5,c);    layout->addWidget(label7,6,l);    layout->addWidget(heightLabel,6,c);    layout->addWidget(label8,7,l);    layout->addWidget(rectLabel,7,c);    layout->addWidget(label9,8,l);    layout->addWidget(sizeLabel,8,c);    updateLabel();}voidGeometry::updateLabel(){    QString temp;    QString str_x;    xLabel->setText(str_x.setNum(x()));//获得X()的函数结果并显示    QString str_y;    yLabel->setText(str_y.setNum(y()));//获得y()的函数结果并显示    //获取frameGeometry()函数的结果并显示    QString frameGeo;    frameGeo = temp.setNum(frameGeometry().x()) + ", " +                 temp.setNum(frameGeometry().y()) + ", " +                temp.setNum(frameGeometry().width()) + ", " +                temp.setNum(frameGeometry().height());    frameGeoLabel->setText(frameGeo);    QString position ;    //获取pos()函数的结果并显示    position = temp.setNum(pos().x()) + ", " + temp.setNum(pos().y());    posLabel->setText(position);    QString geo;    //获取geometry()函数的结果并显示    geo = temp.setNum(geometry().x()) + ", " +            temp.setNum(geometry().y()) + ", " +            temp.setNum(geometry().width()) + ", " +            temp.setNum(geometry().height());    geoLabel->setText(geo);    QString w;    //获取width  height的结果并显示    widthLabel->setText(w.setNum(width()));    QString h;    heightLabel->setText(h.setNum(height())); //获取rect()函数的结果并显示    QString r;    r = temp.setNum(rect().x()) + ", " +            temp.setNum(rect().y()) + ", " +            temp.setNum(rect().width()) + ", " +            temp.setNum(rect().height());    rectLabel->setText(r);     //获取size()函数的结果并显示    QString s;    s = temp.setNum(size().width()) + ", " +            temp.setNum(size().height());    sizeLabel->setText(s);}voidGeometry::moveEvent(QMoveEvent *){    updateLabel();}voidGeometry::resizeEvent(QResizeEvent *){    updateLabel();}


mainwindow.h

#ifndef GEOMETRY_H#define GEOMETRY_H#include <QtGui>class Geometry : public QDialog{    Q_OBJECTpublic:    Geometry();        //声明所需的控件        QLabel *label1;    QLabel *label2;    QLabel *label3;    QLabel *label4;    QLabel *label5;    QLabel *label6;    QLabel *label7;    QLabel *label8;    QLabel *label9;    QLabel *xLabel;    QLabel *yLabel;    QLabel *frameGeoLabel;    QLabel *posLabel;    QLabel *geoLabel;    QLabel *widthLabel;    QLabel *heightLabel;    QLabel *rectLabel;    QLabel *sizeLabel;    void updateLabel();protected:    void moveEvent(QMoveEvent *);    void resizeEvent(QResizeEvent *);};#endif // GEOMETRY_H

实验效果图: