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的可扩展开发 ...
随机推荐
- DynamicsCRM中的自动保存
DynamicsCRM的自动保存功能 在DynamicsCRM2013开始,引入了自动保存功能. 保存一条记录 在新建一条记录的时候, 你必须在左上角手动点击保存按钮.如下图: 当保存完后,会发现,左 ...
- FTP多任务下载实现类
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- angularJs|es6|reactJs|vueJs相关技术(请访问https://expendo.github.io/)
技术博客地址:https://expendo.github.io/
- 一个在线jpg png转ICO的网站
网站地址: https://lvwenhan.com/convertico/
- android 照片地理位置 demo
类似qq空间的的带位置的水印相机实现: 基于高德地图的API实现获取地理位置信息.注意修改Androidmanifest.xml文件中的key.去高德地图api去申请自己的key. 现在网上搜索到的通 ...
- SetProcessAffinityMask的问题
BOOL WINAPI SetProcessAffinityMask( _In_ HANDLE hProcess, _In_ DWORD_PTR dwProcessAffinityMask );//M ...
- Git 配置
在 windows 上安装完 Git 会右键菜单中看到 Git 的快捷打开选项, 点 Git Bash Here 就可以在当前目录下打开 Git 的命令行 Git shell,初次使用 Git 先配置 ...
- 极光推送Jpush(v3)服务端PHP版本集成(V3版本只调用推送API)
因为版本升级,极光推送的API也有了V3,功能也更丰富了,但是对于我们有的用户来说,我们还是只需要调用推送的API就够了. 下载了一份PHP服务端的SDK(下载地址:http://docs.jpush ...
- 1476. Lunar Code
http://acm.timus.ru/problem.aspx?space=1&num=1476 由于前一列对后一列有影响,所以需要保持前一列的状态, 但无需用状态压缩来保存(也保存不了) ...
- React + Redux 入坑指南
Redux 原理 1. 单一数据源 all states ==>Store 随着组件的复杂度上升(包括交互逻辑和业务逻辑),数据来源逐渐混乱,导致组件内部数据调用十分复杂,会产生数据冗余或者混用 ...