深度探索QT窗口系统(五篇)
窗口作为界面编程中最重要的部分,没有窗口就没有界面,是窗口让我们摆脱了DOS时代,按钮是一个窗口,文本框是一个窗口,标签页是一个窗口,。。。一个窗口可以由多个窗口组成,每天我们都在与窗口打交道,当你打开windows时,桌面就是一个窗口,你打开浏览器时,你也正在访问窗口。。。好了,回到今天的话题,QT窗口系统,QT是一个跨平台的框架,类似微软的MFC,Borland的OWL,前者只适用于windows,而使用QT你可以开发windows平台应用程序,你也可以开发linux应用程序,当然了你也可以用于Symbian、Meego的开发,据说,QT未来还会支持Android,iOS等操作系统。更让人欣喜的是,QT是开源的,你可以看到所有QT的源代码,而且帮助文档很详细,可以说,QT是一个很有前途的开发框架,如果大家想要转到QT平台做开发,深入了解QT的窗口系统是很有必要的。
QWidget的是所有窗体的基类,按钮,文本框,对话框都派生自它,所以了解它的特性后,所有窗体的基本属性都了解了。
1.Qt窗体的几何属性(下图是典型的QT窗口):
灰色部分是窗体的边框,白色区域为窗口的内容区域,绿色区域为窗口标题,QWidget提供1组接口访问窗口的几何特性
(1)包含窗口边框的函数: x(), y(), frameGeometry(), pos(), 和 move()
(2)不包含窗口边框的函数: geometry(), width(), height(), rect(), 和size()
下面用一个实例来说明窗口这几个几何特性:
- void print(QWidget *pWidget)
- {
- qDebug() << "this includes the window frame";
- qDebug() << "frameGeometry() = " << pWidget->frameGeometry();
- qDebug() << "pos() = " << pWidget->pos();
- qDebug() << "x() = " << pWidget->x() << "y() = " << pWidget->y();
- qDebug() << "frameSize() = " << pWidget->frameSize();
- qDebug() << "this excludes the window frame";
- qDebug() << "geometry() = " << pWidget->geometry();
- qDebug() << "rect() = " << pWidget->rect();
- qDebug() << "contentRect() = " << pWidget->contentsRect();
- qDebug() << "width() = " << pWidget->width() << "height() = " << pWidget->height();
- qDebug() << "size() = " << pWidget->size();
- }
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- QWidget widget;
- widget.resize(200, 300);
- widget.show();
- print(&widget);
- return a.exec();
- }
显示的窗体大小为,宽为200,高为300,注意,这里的尺寸是相对电脑的屏幕分辩率来说的,也即单位为像素,下面是输出结果,
this includes the window frame
frameGeometry() = QRect(88,116 208x334)
pos() = QPoint(88,116)
x() = 88 y() = 116
frameSize() = QSize(208, 334)
this excludes the window frame
geometry() = QRect(92,146 200x300)
rect() = QRect(0,0 200x300)
contentRect() = QRect(0,0 200x300)
width() = 200 height() = 300
size() = QSize(200, 300)
可以看到包括边框的矩形宽度为208,高度为334;不包括边框的矩形宽度为200,高度为300,这正是我们通过resize设置的尺寸,由上图的窗口图形,不难得出,边框的宽度为4,标题的高度为26。
通过上面的介绍,我们知道了窗体的基本几何属性,也知道怎么去获取这些属性,QWidget有没有提供设置这些属性的方法呢?边框的宽度始终是4吗?标题的高度始终是26吗?有没有办法设置边框的宽度呢?有没有办法设置标题的高度呢?
这些问题留到下一次再介绍。
http://blog.csdn.net/LazyDreamHunter/article/list/3
深度探索QT窗口系统(五篇)的更多相关文章
- 界面编程之QT窗口系统20180726
/*******************************************************************************************/ 一.坐标系统 ...
- Android窗口系统第一篇---Window的类型与Z-Order确定
Android的窗口系统是UI架构很重要的一部分,数据结构比较多,细节比较多.本篇文章主要介绍窗口相关数据结构和抽象概念理解,关于[窗口部分的博客]计划如下. 1.窗口Z-Order的管理 2.应用程 ...
- Android窗口系统第二篇---Window的添加过程
以前写过客户端Window的创建过程,大概是这样子的.我们一开始从Thread中的handleLaunchActivity方法开始分析,首先加载Activity的字节码文件,利用反射的方式创建一个Ac ...
- Android深度探索-卷1第五章心得体会
S3C6410是由三星公司推出的一款低功耗.高性价比的RISC处理器,开发是,首先安装minicom串口调试工具: 第一步:检测当前系统是否支持USB转串口. Lsmod | grep usseria ...
- Android窗口系统第三篇---WindowManagerService中窗口的组织方式
Android窗口系统第一篇—Window的类型与Z-Order确定 Android窗口系统第二篇—Window的添加过程 上面文章梳理了一个窗口的添加过程,系统中有很多应用,每个应用有多个Activ ...
- “MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第二篇(数据库结构、登录窗口、以及主界面)
“MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第二篇(数据库结构.登录窗口.以及主界面) 一.在上一篇文章中,主要说的就是把主框架搭建起来,并且Nhibernate能达到增 ...
- 第六篇 ANDROID窗口系统机制之显示机制
第六篇 ANDROID窗口系统机制之显示机制 ANDROID的显示系统是整个框架中最复杂的系统之一,涉及包括窗口管理服务.VIEW视图系统.SurfaceFlinger本地服务.硬件加速等.窗口管理服 ...
- 在Qt 4.4中,Alien Widget诞生了(Window负责与窗口系统的联系。Alien被号称是所有闪烁的终结者)
2011年09月29日 23:47:46 阅读数:7269 Qt 4.0 automatically double-buffers Qt 4.1 QWidget::autoFillBackground ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
随机推荐
- PHP搭建简单暴力的mvc
对于一个web系统来说,我们使用mvc很必要, 给我们带来的是清晰的结构,易运维,易扩展, mvc 我对其的理解应该叫mxvc, 多了一个x , 这个x代表什么,x可以理解为 relay,proxy, ...
- python 文件夹比较
参考:http://blog.csdn.net/imzoer/article/details/8675078 文件比较:filecmp模块:filecmp '''Created on 2014-6-6 ...
- jquery写的tab切换效果 非常简单
自己写的一款 tab切换效果,比较简单,适合新手 <style type="text/css">*{margin:0; padding:0; font-size:12p ...
- Grunt之学习历程(转自网上资源-整理自用)
认识Grunt Grunt中文文档 安装Node环境 CNode 配置Grunt Grunt中文文档-配置任务 什么是package.json package.json中文文档 关于Grunt资料 应 ...
- jquery判断图片是否加载完毕
来源: <http://www.2cto.com/kf/201409/331234.html> 利用图片没有加载完成的时候,宽高为0.我们很容易判断图片的一个加载情况.如下: 思路:判断图 ...
- 自定义构造、description方法、SEL
[Objective-C]07-自定义构造方法和description方法 // 构造方法:用来初始化对象的方法,是个对象方法,”-"开头// 重写构造方法的目的:为了让对象创建出来,成 ...
- vs2013 MVC 无法确定要使用哪一版本的 ASP.NET Web Pages错误
在web.config文件<configuration>节点下添加 <appSettings> <add key="webPages:Version&q ...
- CSS转载
原文地址:http://www.cnblogs.com/dolphinX/archive/2012/10/13/2722501.html 页面布局,或者是在页面上做些小效果的时候经常会用到 displ ...
- 以程序的方式操纵NTFS的文件权限
Windows NT/2K/XP版本的操作系统都支持NTFS格式的文件系统,这是一个有安全性质的文件系统,你可以通过Windows的资源管理器来设置对每个目录和 文件的用户访问权限.这里我就不对NTF ...
- uestc 10 In Galgame We Trust
题意:求最长的合法括号序列 解:栈+分类讨论 now表示已经算出的序列,且此序列与现在扫描的序列可能能够连接,tmp表示现在扫描到的序列长度 左括号入栈 右括号:1.栈空时:统计当前总长 并且将栈,n ...