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的可扩展开发 ...
随机推荐
- 项目部署到tomcat Root中后导致 WebApplicationContext 初始化两次的解决方法
上一篇文章刚说项目部署到tomcat的ROOT中,今天就发现一个问题.通过eclipse启动tomcat时候,WebApplicationContext 初始化两次: 现象: 通过eclipse控 ...
- web自学网站
coursera 网站很多新的技术,都是大牛和牛大学的,和外国新技术. 我要自学网 有好也有不怎么样的,一般般的.但是dome多. 中国教程网 一般. CSDN 技术相关 站长 ...
- MVC5+EF6 入门完整教程八
本篇是相对独立的一篇,主要讲解不丢失数据进行数据库结构升级. 前面我们讲解EF功能时,已经介绍过一种更新数据库的方式: EF比较model和database,如果两边不一致,程序将会drop and ...
- mysql取前几行数据limit用法
转自http://www.cnblogs.com/study100/archive/2013/07/30/3224250.html 在mysql中是没有top关键字的,在mysql中可以用limit来 ...
- css3圆角(还有百分比设置椭圆) 阴影 字体
一. 现在前面只写知识点,全部内容放在后面截图展示: 给元素添加圆角: border-radius属性,他的值如果等于高的一半,将会等到一个圆形,大于一半叶然是一个圆形 radius是指半径,他求出圆 ...
- Centos 6.5 安装 ionCube PHP Loader
使用某些php的程序的时候会出现提示:Site error: the file /***/index.php requires the ionCube PHP Loader ioncube_loade ...
- cacti web页面访问 settings出错
查看apache错误日志: 错误信息Mon Dec 26 11:00:48.241653 2016] [:error] [pid 32607] [client 192.168.10.79:65009] ...
- Linux安装node
以Ubuntu为例 1.apt-get update 2.apt-get install python gcc make g++ 3.wget https://nodejs.org/dist/v4.3 ...
- Redis学习笔记~实现消息队列比MSMQ更方便
什么是队列:简单的说就是数据存储到一个空间里(可以是内存,也可以是物理文件),先存储的数据对象,先被取出来,这与堆栈正好相反,消息队列也是这样,将可能出现高并发的数据进行队列存储,并按着入队的顺序依次 ...
- CAST()函数
语法: CAST(expression AS data_type) 参数说明: expression:任何有效的SQServer表达式 AS:用于分割两个参数,在AS之前的是需要处理的数据,在AS之后 ...