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

按照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();
}

void
Geometry::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);
}

void
Geometry::moveEvent(QMoveEvent *)
{
    updateLabel();
}

void
Geometry::resizeEvent(QResizeEvent *)
{
    updateLabel();
}


mainwindow.h

#ifndef GEOMETRY_H
#define GEOMETRY_H

#include <QtGui>

class Geometry : public QDialog
{
    Q_OBJECT
public:
    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

实验效果图:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值