按照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
实验效果图: