Qt之显示位置信息
2011-08-14 11:59
141 查看
一、我的代码展示(警告:本代码不能通过,错误提示为“段错误”)
错误说明:如果注释掉语句后边有**的这一行,则编译、运行能通过,但是geometry()坐标(0,0)和长宽(640,480)不变,frameGeometry()运行正常,如果不注释掉这提示“段错误”,如下图:
![](http://hi.csdn.net/attachment/201108/14/0_13132941758QQE.gif)
移动后->
![](http://hi.csdn.net/attachment/201108/14/0_1313294216Mm6R.gif)
二、知识点介绍:
QWidget::geometry()函数返回的是该控件(不含边框)的左上角相对于副窗口的坐标(即x为该点到父窗口左边界的距离,y为到上边界的距离)和宽、高(均不含窗口)QWidget::frameGeometry()就是返回不含边框的位置信息,具体见图分析:
![](http://hi.csdn.net/attachment/201108/14/0_131329425415Ss.gif)
这是官方参考文档信息
![](http://hi.csdn.net/attachment/201108/14/0_13132943098QfF.gif)
这一张是《Linux窗口程序设计—Qt4精彩实例分析》的运行结果截图,对此结果我的分析如下:
(1)左、右、下的边界宽为6:(337-325)/2=6 与 329-323=6 结论符合
(2)上边界为20:182-162=20 与 398-372-6=20 符合
三、如果有能看出我错误的道友们,希望能指出我的错误,谢谢。。。
// geometry.h #ifndef GEOMETRY_H #define GEOMETRY_H #include <QDialog> class QMoveEvent; class QResizeEvent; class QPushButton; class QGridLayout; class geometry:public QDialog { Q_OBJECT public: geometry(); void update(); void moveEvent(QMoveEvent *); void resizeEvent(QResizeEvent *); private: QPushButton *button1_1; QPushButton *button1_2; QPushButton *button2_1; QPushButton *button2_2; QGridLayout *layout; }; #endif
//geometry.cpp #include <QtGui> #include "geometry.h" geometry::geometry() { layout=new QGridLayout(this); button1_1=new QPushButton("Geometry:"); button1_2=new QPushButton; button2_1=new QPushButton("FraneGeometry:"); button2_2=new QPushButton; layout->addWidget(button1_1,0,0); layout->addWidget(button1_2,0,1); layout->addWidget(button2_1,1,0); layout->addWidget(button2_2,1,1); update(); //************* } void geometry::update() { QString temp; QString geo; geo=temp.setNum(geometry().x())+","+temp.setNum(geometry().y())+","+temp.setNum(geometry().width())+","+temp.setNum(geometry().height()); button1_2->setText(geo); QString fram; fram=temp.setNum(frameGeometry().x())+","+temp.setNum(frameGeometry().y())+","+temp.setNum(frameGeometry().width())+","+temp.setNum(frameGeometry().height()); button2_2->setText(fram); } void geometry::moveEvent(QMoveEvent *) { update(); } void geometry::resizeEvent(QResizeEvent *) { update(); }
//main.cpp #include <QApplication> #include "geometry.h" int main(int argc,char **argv) { QApplication app(argc,argv); geometry geo; geo.show(); return app.exec(); }
错误说明:如果注释掉语句后边有**的这一行,则编译、运行能通过,但是geometry()坐标(0,0)和长宽(640,480)不变,frameGeometry()运行正常,如果不注释掉这提示“段错误”,如下图:
![](http://hi.csdn.net/attachment/201108/14/0_13132941758QQE.gif)
移动后->
![](http://hi.csdn.net/attachment/201108/14/0_1313294216Mm6R.gif)
二、知识点介绍:
QWidget::geometry()函数返回的是该控件(不含边框)的左上角相对于副窗口的坐标(即x为该点到父窗口左边界的距离,y为到上边界的距离)和宽、高(均不含窗口)QWidget::frameGeometry()就是返回不含边框的位置信息,具体见图分析:
![](http://hi.csdn.net/attachment/201108/14/0_131329425415Ss.gif)
这是官方参考文档信息
![](http://hi.csdn.net/attachment/201108/14/0_13132943098QfF.gif)
这一张是《Linux窗口程序设计—Qt4精彩实例分析》的运行结果截图,对此结果我的分析如下:
(1)左、右、下的边界宽为6:(337-325)/2=6 与 329-323=6 结论符合
(2)上边界为20:182-162=20 与 398-372-6=20 符合
三、如果有能看出我错误的道友们,希望能指出我的错误,谢谢。。。
相关文章推荐
- qt显示视频大小和位置
- JQuery判断radio属性为空的时候错误提示信息显示位置不正确解决办法
- 登陆 注册 (登陆时显示用户信息,未登录是显示登陆框。----- 一个位置显示)
- 实现在编辑区位置显示收信人统计信息
- QT:各类位置信息
- 解决qt在相同分辨率不同宽度的屏幕下字体显示位置不一样的问题
- Android 指定Toast信息显示的位置并使用Toast显示其他View
- Qt通过QToolTip显示浮动信息
- Struts2 Validation验证框架错误提示信息的显示位置
- jQuery-图片上传裁剪插件--imgAreaSelect(分析二) 同步显示图像位置信息
- googlemap 高德地图mapabc 图吧 显示地图,标注一个或多个poi信息点,弹出气泡显示poi点的位置信息
- Qt通过QToolTip显示浮动信息
- iOS 地图显示比例设置 (这里是当前的位置信息代理方法中实现)
- 高德完美获取地理位置信息并显示出来~~
- qt在GUI显示时,将调试信息输出到控制台的设置
- Linux下显示IP地理位置信息的小工具-nali
- 通过查询数据库中的数据匹配在页面上:(set单条数据属性是在页面上的显示与foreach的不同) 通过ID修改提取位置表信息
- 利用顺序表的操作,实现以下函数: 1)从顺序表中删除具有最小值的元素并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。
- 鼠标提示——在鼠标当前位置显示提示信息
- Linux下显示IP地理位置信息的小工具