【Qt5開發及實例】17、一個對話框的坐標參數顯示
來源:程序員人生 發布時間:2015-01-26 08:56:38 閱讀次數:3629次
1個對話框的坐標參數顯示
介紹
這個是為了得到對話框的長寬,各個點的坐標,相對坐標,相對父窗口的坐標,相對在桌面的坐標
代碼
geometry.h
/**
* 書本:【Qt5開發及實例】
* 功能:顯示對話框的坐標信息,參數信息
* 文件:geometry.cpp
* 時間:2015年1月20日20:19:35
* 作者:cutter_point
*/
#ifndef GEOMETRY_H
#define GEOMETRY_H
#include <QDialog>
#include <QLabel>
#include <QGridLayout>
class Geometry : public QDialog
{
Q_OBJECT
public:
Geometry(QWidget *parent = 0);
~Geometry();
//更新數據的顯示
void updateLabel();
private:
QLabel *xLabel; //表示對話框的最開始的x坐標橫向----->
QLabel *xValueLabel;
QLabel *yLabel; //表示對話框的最開始的y坐標縱向下箭頭
QLabel *yValueLabel;
QLabel *FrmLabel; //綜合位置和對話框的寬和長
QLabel *FrmValueLabel;
QLabel *posLabel; //位置坐標,就是x,y
QLabel *posValueLabel;
QLabel *geoLabel; //x,y和對話框不包括標題的大小,長寬
QLabel *geoValueLabel;
QLabel *widthLabel; //里面的寬
QLabel *widthValueLabel;
QLabel *heightLabel; //里面的長
QLabel *heightValueLabel;
QLabel *rectLabel; //起始的0,0和里面的長和寬
QLabel *rectValueLabel;
QLabel *sizeLabel; //里面的長寬
QLabel *sizeValueLabel;
QGridLayout *mainLayout; //網格布局
protected:
void moveEvent(QMoveEvent *); //對話框移動的話,坐標要改變
void resizeEvent(QResizeEvent *); //對話框大小改變的話
};
#endif // GEOMETRY_H
geometry.cpp
/**
* 書本:【Qt5開發及實例】
* 功能:顯示對話框的坐標信息,參數信息
* 文件:geometry.cpp
* 時間:2015年1月20日20:19:35
* 作者:cutter_point
*/
#include "geometry.h"
Geometry::Geometry(QWidget *parent) //構造函數
: QDialog(parent)
{
setWindowTitle(tr("cutter_point Geometry"));
xLabel = new QLabel(tr("x():")); //坐標x
xValueLabel =new QLabel;
yLabel =new QLabel(tr("y():"));
yValueLabel =new QLabel;
FrmLabel =new QLabel(tr("Frame:"));
FrmValueLabel =new QLabel;
posLabel =new QLabel(tr("pos():"));
posValueLabel =new QLabel;
geoLabel =new QLabel(tr("geometry():"));
geoValueLabel =new QLabel;
widthLabel =new QLabel(tr("width():"));
widthValueLabel =new QLabel;
heightLabel =new QLabel(tr("height():"));
heightValueLabel =new QLabel;
rectLabel =new QLabel(tr("rect():"));
rectValueLabel =new QLabel;
sizeLabel =new QLabel(tr("size():"));
sizeValueLabel =new QLabel;
mainLayout = new QGridLayout(this); //網格布局
mainLayout->addWidget(xLabel, 0, 0);
mainLayout->addWidget(xValueLabel,0,1);
mainLayout->addWidget(yLabel,1,0);
mainLayout->addWidget(yValueLabel,1,1);
mainLayout->addWidget(posLabel,2,0);
mainLayout->addWidget(posValueLabel,2,1);
mainLayout->addWidget(FrmLabel,3,0);
mainLayout->addWidget(FrmValueLabel,3,1);
mainLayout->addWidget(geoLabel,4,0);
mainLayout->addWidget(geoValueLabel,4,1);
mainLayout->addWidget(widthLabel,5,0);
mainLayout->addWidget(widthValueLabel,5,1);
mainLayout->addWidget(heightLabel,6,0);
mainLayout->addWidget(heightValueLabel,6,1);
mainLayout->addWidget(rectLabel,7,0);
mainLayout->addWidget(rectValueLabel,7,1);
mainLayout->addWidget(sizeLabel,8,0);
mainLayout->addWidget(sizeValueLabel,8,1);
updateLabel();
}
//更新坐標
void Geometry::updateLabel()
{
QString xStr; //取得x()函數的結果并顯示
xValueLabel->setText(xStr.setNum(x()));
QString yStr; //取得y()函數的結果并顯示
yValueLabel->setText(yStr.setNum(y()));
QString frameStr; //取得frameGeometry函數的結果并顯示
QString tempStr1, tempStr2, tempStr3, tempStr4;
frameStr = tempStr1.setNum(frameGeometry().x()) + ", " + tempStr2.setNum(frameGeometry().y()) + ", " +
tempStr3.setNum(frameGeometry().width()) + ", " + tempStr4.setNum(frameGeometry().height());
FrmValueLabel->setText(frameStr);
QString positionStr; //取得pos函數的結果并顯示
QString tempStr11, tempStr12;
positionStr = tempStr11.setNum(pos().x()) + ", " + tempStr12.setNum(pos().y());
posValueLabel->setText(positionStr);
QString geoStr; //取得geometry()函數的結果并顯示
QString tempStr21, tempStr22, tempStr23, tempStr24;
geoStr = tempStr21.setNum(geometry().x()) + ", " + tempStr22.setNum(geometry().y()) + ", " +
tempStr23.setNum(geometry().width()) + ", " + tempStr24.setNum(geometry().height());
geoValueLabel->setText(geoStr);
QString wStr, hStr; //取得width, height函數的結果并顯示
widthValueLabel->setText(wStr.setNum(width()));
heightValueLabel->setText(hStr.setNum(height()));
QString rectStr; //取得rect函數的結果并顯示
QString tempStr31, tempStr32, tempStr33, tempStr34;
rectStr = tempStr31.setNum(rect().x()) + ", " + tempStr32.setNum(rect().y()) + ", " +
tempStr33.setNum(rect().width()) + ", " + tempStr34.setNum(rect().height());
rectValueLabel->setText(rectStr);
QString sizeStr; //取得size函數的結果并顯示
QString tempStr41, tempStr42;
sizeStr = tempStr41.setNum(size().width()) + ", " + tempStr42.setNum(size().height());
sizeValueLabel->setText(sizeStr);
}
//重新定義移動對話框事件
void Geometry::moveEvent(QMoveEvent *)
{
updateLabel();
}
void Geometry::resizeEvent(QResizeEvent *)
{
updateLabel();
}
Geometry::~Geometry()
{
}
main.cpp
#include "geometry.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Geometry w;
w.show();
return a.exec();
}
運行結果


好吧,我發現照片超過1M就沒法上傳了,666666,我記得好像是2M的,怪我太天真???
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈