博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt5开发及实例学习之位置函数
阅读量:7038 次
发布时间:2019-06-28

本文共 4832 字,大约阅读时间需要 16 分钟。

hot3.png

1、新建GUI应用,项目名称"Geometry",基类选择"QDialog",类名为"Geometry",取消"创建界面"。

f04b7d003567be7990da6fb3fad73d2de86.jpgdd684a30543fc36e5a0b6b3c92d5c62d597.jpg

main.cpp不变:

#include "geometry.h"#include 
int main(int argc, char *argv[]){ QApplication a(argc, argv); Geometry w; w.show(); return a.exec();}

2、Geometry类继承自QDialog类,在头文件中声明需要的控件[QLabel]以及所需要的函数

#ifndef GEOMETRY_H#define GEOMETRY_H#include 
#include
#include
class Geometry : public QDialog{ Q_OBJECT public: Geometry(QWidget *parent = 0); ~Geometry(); void updateLabel();private: QLabel *xLabel; QLabel *xValueLabel; QLabel *yLabel; QLabel *yValueLabel; QLabel *FrmLabel; QLabel *FrmValueLabel; QLabel *posLabel; QLabel *posValueLabel; QLabel *geoLabel; QLabel *geoValueLabel; QLabel *widthLabel; QLabel *widthValueLabel; QLabel *heightLabel; QLabel *heightValueLabel; QLabel *rectLabel; QLabel *rectValueLabel; QLabel *sizeLabel; QLabel *sizeValueLabel; QGridLayout *mainLayout;protected: void moveEvent(QMoveEvent *); void resizeEvent(QResizeEvent *);};#endif // GEOMETRY_H

3、在构造函数中完成控件的创建以及初始化工作
4、updateLabel()函数完成获得各位置函数的信息并显示功能
5、重定义QWidget的moveEvent()函数,响应对话框的移动事件,使得窗体在被移动时能够同步更新个函数的显示结果。
6、重定义QWidget的resizeEvent()函数,响应对话框的大小调整事件,使得窗体大小改变时能够同步更新个函数的显示结果。

#include "geometry.h"Geometry::Geometry(QWidget *parent)    : QDialog(parent){    setWindowTitle(tr("Geometry"));    xLabel =new QLabel(tr("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();}Geometry::~Geometry(){    }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()*/width())+","+tempStr34.setNum(height()/*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();}

 

转载于:https://my.oschina.net/u/3919756/blog/1935014

你可能感兴趣的文章
UserInterfaceState.xcuserstate unlocked
查看>>
Android系统Recovery工作原理之使用update.zip升级过程分析(五)---u...
查看>>
android framework层简单研究
查看>>
深入解析Mac OS X & iOS操作系统
查看>>
结构体中使用函数指针
查看>>
PostgreSQL数据库日常学习笔记5-删除数据
查看>>
JBPM流程引擎
查看>>
关于windows 2003 2008 域方面的知识
查看>>
sql 一条记录多次操作(分隔符或者其它处理)--替换游标
查看>>
回顾2013软件开发:JavaScript领风骚
查看>>
Cache-Control must-revalidate setHeader详解 http缓存
查看>>
学习笔记-- 2014-07-07 Linux常用命令
查看>>
XenApp 屏幕录像播放提示版本错误
查看>>
linux 通配符、元字符和特殊字符
查看>>
记下linux根下目录的用途(笔记)
查看>>
Onlyoffice部署文档
查看>>
超链接调用手机拨号,发短信功能
查看>>
IPsec在企业网中的应用
查看>>
我的友情链接
查看>>
我的友情链接
查看>>