当前位置:首页 > 经验 >

对话框可以改变大小和移动吗(对话框窗口可以改变大小和移动吗)

来源:原点资讯(www.yd166.com)时间:2024-03-26 19:51:58作者:YD166手机阅读>>

Qt提供了很多关于获取窗体位置及显示区域大小的函数,本实例利用一个简单的显示窗体的各种位置信息,包括窗体的所在点位置、长、宽信息等。本实例的目的是分析各个有关位置信息的函数之间的区别,如x()、y()、pos()、rect()、size()、geometry()等,以及在不同的情况下应使用哪个函数来获取位置信息。实现的效果如下图所示。

对话框可以改变大小和移动吗,对话框窗口可以改变大小和移动吗(1)

在实例中,分别调用了x()、y()、frameGeometry()、pos()、geometry()、width()、height()、rect()、size()几个函数,这几个函数均是QWidget提供的。当改变对话框的大小,或移动对话框时,调用各个函数所获得的信息显示也相应地发生变化,从变化中可得知各函数之间的区别。

由于本实例的目的是为了分析各函数之间的区别并获得结论,而程序本身的实现较为简单,因此只简单介绍实现过程。

新建Qt Widgets Application,项目名称Geometry,基类QWidget。设计UI界面如下:

对话框可以改变大小和移动吗,对话框窗口可以改变大小和移动吗(2)

头文件widget.h:

#include <QWidget> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); void updateLabel(); protected: void moveEvent(QMoveEvent *event); void resizeEvent(QResizeEvent *event); private: Ui::Widget *ui; }; #endif // WIDGET_H

实现文件widget.cpp:

#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); updateLabel(); }

程序初始化时调用updateLabel()函数,以获得各位置函数的信息并显示。具体代码如下:

void Widget::updateLabel() { QString str; // 获得x()函数的结果并显示 ui->labX->setText(QString::number(x())); // 获得y()函数的结果并显示 ui->labY->setText(QString::number(y())); // 获得frameGeometry()函数的结果并显示 str=QString::number(frameGeometry().x()) "," QString::number(frameGeometry().y()) "," QString::number(frameGeometry().width()) "," QString::number(frameGeometry().height()); ui->labFrameGeo->setText(str); // 获得pos()函数的结果并显示 str=QString::number(pos().x()) "," QString::number(pos().y()); ui->labPos->setText(str); // 获得geometry函数的结果并显示 str=QString::number(geometry().x()) "," QString::number(geometry().y()) "," QString::number(geometry().width()) "," QString::number(geometry().height()); ui->labGeo->setText(str); // 获得width(),height()函数的结果并显示 ui->labWidth->setText(QString::number(width())); ui->labHeight->setText(QString::number(height())); // 获得rect()函数的结果并显示 str=QString::number(rect().x()) "," QString::number(rect().y()) "," QString::number(rect().width()) "," QString::number(rect().height()); ui->labRect->setText(str); // 获得size()函数的结果并显示 str=QString::number(size().width()) "," QString::number(size().height()); ui->labSize->setText(str); }

updateLabel()函数负责调用各个位置函数获得结果并显示。

重定义QWidget的moveEvent()和resizeEvent()函数,分别响应对话框的移动事件和大小调整事件,使得窗体在被移动或窗体大小发生改变时,能同步更新各函数结果的显示。具体代码如下:

void Widget::moveEvent(QMoveEvent *event) { updateLabel(); } void Widget::resizeEvent(QResizeEvent *event) { updateLabel(); }

通过这个例子可以获得如下图所示的结论。

对话框可以改变大小和移动吗,对话框窗口可以改变大小和移动吗(3)

x()、y()和pos()函数都是获得整个窗体左上角的坐标位置。而frameGeometry()与geometry()相对应,frameGeometry()是获得整个窗体的左上顶点和长、宽值,而geometry()函数获得的是窗体内中央区域的左上顶点坐标以及长、宽值。直接调用width()和height()函数获得的是中央区域的长和宽的值。

还有两个函数rect()、size(),调用它们获得的结果也都是对于窗体的中央区域而言的, size()获得的是窗体中央区域的长、宽值,rect()与geometry()一样返回一个QRect对象。其中,两个函数获得的长、宽值是一样的,都是窗体中央区域的长、宽值,只是左上顶点的坐标值不一样,geometry()获得的左上顶点坐标是相对于父窗体而言的坐标,而rect()获得的左上顶点坐标始终为(0,0)。

因此,在实际应用中需根据情况使用正确的位置信息函数以获得准确的位置尺寸信息,尤其是在编写对位置精度要求较高的程序时,如地图浏览程序,更应注意函数的选择,避免产生不必要的误差。

在编写程序时,初始化窗体时最好不要使用setGeometry()函数,而用resize()和move()函数代替,因为使用setGeometry()会导致窗体show()之后在错误的位置上停留很短暂的一段时间,带来闪烁现象。

——————————————————

对话框可以改变大小和移动吗,对话框窗口可以改变大小和移动吗(4)

对于本文实例完整代码有需要的朋友,可关注并在评论区留言!

,

栏目热文

什么是对话框(对话框由哪部分组成)

什么是对话框(对话框由哪部分组成)

微信是我们日常交流沟通必不可少的工具,平时打开微信就能和朋友畅聊,打字、语音、视频聊天多种多样。今天笔者就教一个技巧给大...

2024-03-26 19:57:10查看全文 >>

微信聊天透明对话框(微信切换聊天对话框)

微信聊天透明对话框(微信切换聊天对话框)

大家好,今天给大家分享一个非常有趣的小技巧,大家可以先跟着我看一下。点开微信可以看到在我的微信页面有一个非常特别的地方,...

2024-03-26 19:30:45查看全文 >>

对话框既不能移动也不能改变大小(对话框怎么放大或缩小)

对话框既不能移动也不能改变大小(对话框怎么放大或缩小)

接着上一篇的计算机基础新题型第一章,第二章内容也整理好了,希望能对大家能有所帮助,谢谢!今天整理笔记时候看到了一句非常好...

2024-03-26 19:56:17查看全文 >>

对话框是指啥(什么是对话框怎么打开)

对话框是指啥(什么是对话框怎么打开)

对话框是一种重要的交互方式,主要用于完成信息传递。虽然很常见,却并不见得每一个设计师都可以百分百地弄明白对话框这个概念。...

2024-03-26 19:28:27查看全文 >>

微信打字看不见对话框(微信打字的显示框不见了)

微信打字看不见对话框(微信打字的显示框不见了)

前两天,一个读者留言:和深深在意的人联络,倘若他迟迟不回消息,我便会删了那个对话框。因为不想看见自己卑微讨好的模样,也不...

2024-03-26 19:53:47查看全文 >>

对话框是指(对话框由哪些组成)

对话框是指(对话框由哪些组成)

wxPython 对话框 对话窗口或对话框是大多数现代GUI应用程序中不可缺少的一部分。对话的定义是两个或两个以上的人之...

2024-03-26 19:37:55查看全文 >>

什么叫对话框啊(对话框是啥意思)

什么叫对话框啊(对话框是啥意思)

编辑导读:“模态(Modal)”原先是物理计算机领域的词汇,引申到软件设计领域可以简化理解为“模式” “状态”。本文作者...

2024-03-26 20:07:53查看全文 >>

蓝色对话框是什么聊天软件(微信聊天对话框底下的小字怎么弄)

蓝色对话框是什么聊天软件(微信聊天对话框底下的小字怎么弄)

上一期的朋友圈,头像,昵称的透明教程,机友玩得过瘾不。但由于需要安卓手机来操作,很多苹果用户气得哇哇叫,搞得机哥都不好意...

2024-03-26 19:58:53查看全文 >>

窗口与对话框的最大区别(对话框和窗口的最大区别是)

窗口与对话框的最大区别(对话框和窗口的最大区别是)

业务窗口是群众解决问题的渠道也是公安机关传递温情与担当的机会在这里每一个难题都有望变成易事每一个诉求都将得到倾听与回应这...

2024-03-26 19:24:49查看全文 >>

为什么叫对话框(对话框是特殊窗口吗)

为什么叫对话框(对话框是特殊窗口吗)

本篇文章,作者将分析弹窗、抽屉和折叠面板三个组件的用法特征,并对这三个组件的使场景提供对应的使用建议,能给产品设计的伙伴...

2024-03-26 19:39:20查看全文 >>

文档排行