MainWindow、QWidget和QDialog的区别和选择(转载)
QApplication类用于管理应用程序范围内的资源,其构造函数需要main函数的argc和argv作为参数。
Widget被创建时都是不可见的,widget中可容纳其他的widget。
Qt中的widget在有用户行为或状态改变时会emit signal。Signal可以和slot函数连接在一起(connect),这样当有signal被emit时,对应的slot函数会被自动调用。
QWidget类的构造函数需要一个QWidget *指针作为参数,表示其parent widget(默认值为0,即不存在parent widget)。在parent widget被删除时,Qt会自动删除其所有的child widget。
Qt中有三种Layout Manager类:QHBoxLayout、QVBoxLayOut和QGridLayout。基本模式是将widget添加进layout,由layout自动接管widget的尺寸和位置。
启动Qt程序时可以通过-style参数改变程序的默认显示风格。
子类 dialog
Qt中所有dialog的基类是QDialog。QDialog派生自QWidget。
Qt中所有定义了signal或slot的类,在其类定义的开始都要使用Q_OBJECT宏。Qt中的signal关键字实际上是宏定义,类似地,slots关键字也是宏定义。
QObject::tr()函数将输入的字符串转换为其他语言(国际化)。对所有用户可见的字符串都使用国际化语言是一个良好的习惯。
Buddy:两个widge A和B,若A拥有快捷键,当用户按下该快捷键时,程序的输入焦点自动转移到B上,则称B是A的buddy。
QWidget::close()是一个slot,其默认行为是使对应的widget隐藏不可见,但并不删除该widget。
Layout中可包含widget和其他的的layout。通过嵌套使用QHBoxLayout、QVBoxlayout、QGridlayout,可以构造非常复杂的dialog。值得注意的是:layout manager类并不属于widget。实际上,它派生与QLayout,而QLayout又派生与QObject。
QWidget::sizeHint()返回一个widget的理想大小()。
Emit关键字是Qt特有的,用于产生signal。
MOC(Meta-Object-Compiler):对于所有使用了Q_OBJECT宏的类,在编译时都需要通过MOC的处理,否则会出现连接错误,解决该错误的办法很简单,重新执行qmake以更新makefile,然后重新编译。
Signal&slot机制是Qt的根基
slot和普通的C++类成员函数几乎完全一致;可以是virtual的,可以被重载,可以是public、protected或private的,而且也可被其他成员函数直接调用。
Signal与slot之间的关联可以是一对一、一对多、多对一。Signal和signal之间也可以被关联,此种情况与signal-slot的区别在于,当第一个signal被emit时,第二个signal也别emit。可以调用disconnect()来解除signal与slot之间的关联,通常情况下很少需要显示调用disconnect(),因为对象被删除时Qt会自动移除与其相关的关联。
MainWindow、QWidget和QDialog的区别和选择(转载)的更多相关文章
- QWidget QMainWindow QDialog 三者区别
Qt类是一个提供所需的像全局变量一样的大量不同的标识符的命名空间.通常情况下,你可以忽略这个类.QObject和一些其它类继承了它,所以在这个Qt命名空间中定义的所有标识符通常情况下都可以无限制的使用 ...
- PHP的抽象类、接口的区别和选择[转载]
区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过关键字extends继承. 2.接口中不可以声明成员变量(包括类静态变量),但是可 ...
- QT中QWidget、QDialog以及MainWindow的区别
参考 http://blog.csdn.net/u011619422/article/details/47311101 QT中QWidget.QDialog以及MainWindow的区别 QWidge ...
- QWidget QMainWindow QDialog 三个基类的区别
Qt类是一个提供所需的像全局变量一样的大量不同的标识符的命名空间.通常情况下,你可以忽略这个类.QObject和一些其它类继承了它,所以在这个Qt命名空间中定义的所有标识符通常情况下都可以无限制的使用 ...
- 【Qt】QWidget、QDialog、QMainWindow的异同点【转】
简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget.QDialog.QMainWindow. 熟悉Qt的同学都应该知道,在新建Qt Widgets项目进行类信息选择时会碰到它 ...
- QT中QMainWindow、QWidget、QDialog
QT中QMainWindow.QWidget.QDialog 简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget.QDialog.QMainWindow. 熟悉Qt的同学都应 ...
- QWidget、QDialog、QMainWindow的异同点
简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口 - QWidget.QDialog.QMainWindow. QWidget继承于QObject和QPaintDevice,QDialog ...
- atitit.html5 vs 原生 app的区别与选择
atitit.html5 vs 原生 app的区别与选择 1. html5的优点 1 1.1. 最大优势::在跨平台(ios苹果,android安卓等) 1 1.2. 开放性 1 1.3. 快速的更 ...
- 查看Eclipse版本号的方法及各个版本区别 Eclipse选择标准
这篇文章主要介绍了查看Eclipse版本号的方法及各个版本区别 Eclipse选择标准,方便初学者选择适合自己的版本,需要的朋友可以参考下 Eclipse 是一个开放源代码的.基于Java的可扩展开发 ...
随机推荐
- css学习笔记 10
一个竖向导航,假设ul宽度为100px,li不浮动,在各浏览器下都会正常显示,当li左浮动时,在标准浏览器下,li会横向排列,如果第一行的剩余空间的宽度不够下一个li,下一个li自动换到第二行,第二行 ...
- spring设置全局异常处理器
1.spring设置全局异常,它的原理是向上捕获 spring.xml配置 <!--自定义全局异常处理器--> <bean id="globalExceptionResol ...
- 我需要在Web上完成一个图片上传的功能
我需要在Web上完成一个图片上传的功能. 这个页面需要能从手机中选择图片上传. 首先,这个页面是从微信上面触发的,所以修改了微信的的入口地址,增加了身份识别号作为传参. 跳转到页面的时候,页面先检查身 ...
- Mediawiki
摘要: 本文讲述如何使用Mediawiki搭建个人wiki系统.以及wiki的部分基本操作和设置 日常开发中总会有许多东西需要记录,很多软件都可以做到这一点,例如有道云笔记,或者写博客.但个人偏爱于M ...
- JS/jquery获取iframe内部元素和ifame中获取外部元素精华
1.从外部获取iframe内部元素方法: js : window.frames['frame'].document.getElementById("imglist"); //f ...
- Visual Studio 2015中快捷键总结
今天总结了Visual Studio工具中常用的快捷键,可供平时参考查阅. 程序调试相关的快捷键F5: 启动调试Ctrl+F5: 开始执行(不调试)Shift+F5: 停止调试Ctrl+Shift+F ...
- batchInsert xml 配置 ibatis
<insert id="tops_visa_openapi_jvisaproduct.batchinsert" parameterClass="java.util. ...
- Spring事务管理器的应对
Spring抽象的DAO体系兼容多种数据访问技术,它们各有特色,各有千秋.像Hibernate是非常优秀的ORM实现方案,但对底层SQL的控制不太方便:而iBatis则通过模板化技术让你方便地控制SQ ...
- C# 发送HttpWebRequest获得网络图片的大小、尺寸
可以通过HttpWebRequest的方式发送一个网络图片的请求,再通过HttpWebResponse接收返回的数据,分析数据流得到图片的大小以及尺寸,代码如下: /// <summary> ...
- Android中的DrawerLayout
简介 Drawerlayout是google自带的控件,功能类似开源的SlidingMenu,在support-v4包下用来替代SlidingMenu(google好无耻啊). 使用方法 在activ ...