深度探索QT窗口系统(五篇)
2016-06-25 02:37
661 查看
窗口作为界面编程中最重要的部分,没有窗口就没有界面,是窗口让我们摆脱了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窗口):
![](https://images2015.cnblogs.com/blog/341522/201606/341522-20160625023611438-267881811.jpg)
灰色部分是窗体的边框,白色区域为窗口的内容区域,绿色区域为窗口标题,QWidget提供1组接口访问窗口的几何特性
(1)包含窗口边框的函数: x(), y(), frameGeometry(), pos(), 和 move()
(2)不包含窗口边框的函数: geometry(), width(), height(), rect(), 和size()
下面用一个实例来说明窗口这几个几何特性:
[cpp] view plain copy
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
QWidget的是所有窗体的基类,按钮,文本框,对话框都派生自它,所以了解它的特性后,所有窗体的基本属性都了解了。
1.Qt窗体的几何属性(下图是典型的QT窗口):
![](https://images2015.cnblogs.com/blog/341522/201606/341522-20160625023611438-267881811.jpg)
灰色部分是窗体的边框,白色区域为窗口的内容区域,绿色区域为窗口标题,QWidget提供1组接口访问窗口的几何特性
(1)包含窗口边框的函数: x(), y(), frameGeometry(), pos(), 和 move()
(2)不包含窗口边框的函数: geometry(), width(), height(), rect(), 和size()
下面用一个实例来说明窗口这几个几何特性:
[cpp] view plain copy
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 .pro文件部分变量解析
- Qt开发实例-贪吃蛇
- qwtplot3d+QT5.6.0+VS2013+windows10编译
- QT5.4 计算器程序 打包&发布,解决dll的最新解决方案(图文并茂,很清楚)
- qt 设置应用图标
- 使用 PyQt 转换网页到 PDF(使用QtWebKit加载完毕后,打印整个窗口就行了,真简单!)
- pyqt中使用matplotlib绘制动态曲线 – pythonic
- pyqt开发教程-搭建环境和开发示例
- [转]使 Windows 下的 Qt 应用程序获得 Administrator 权限
- Qt学习(二)------实例mynotepad制作
- Qt tcp socket编程
- QTP 依次读取文本中的各行数据
- QTP 数据库连接字符串动态赋值
- qtp执行文本中的sql语句/脚本
- Qt资料大全
- Qt资料大全
- MQTT 客户端应用及常见问题(C#)
- MQTT客户端搭建及应用(Nodejs)
- http://emqtt.com/
- Qt获取本机IP地址和名称