PyQt学习笔记01-Qt基本概念进阶篇之窗口布局,对话框
来源:互联网 发布:软件开发专业大学排名 编辑:程序博客网 时间:2024/04/30 15:44
Laying Out Widgets on a Form
Qt提供的的基本的Layout Manager包括:QHBoxLayout,QVBoxLayout,QGridLayout和QStackLayout。
Qt中其它能完成Layout management功能的类包括 QSplitter,QScrollArea,QMainWindow和QWorkspace。
Qt中管理child widget的layout共有三种方式:absolute positioning, manual layout和layout managers。
Absolute positioning:即由程序员通过hard-coded的形式管理child widget的位置和尺寸。
Manual Layout:child widget的位置依然由程序员通过hard-coded的方式确定,而尺寸与父窗口的大小成一定比例,而不是完全的hard-coded。这种方式通过对form的resizeEvent()进行再实现来对child widget的定位。
最重要的三个Layout Manger是QHBoxLayout,QVBoxLayout,QGridLayOut,他们都是派生自QLayout
QGridLayout的使用略微有些复杂,它工作在一个由Cell组成的二维grid上。对于QGridLayout,为其添加widget的方式如下:
layout-> addWidget(widget,row ,colum,rowSpan,columnSpan)
其中widget为待添加的child widget, row和clomun确定该widget所占据空间中左上角那个Cell的位置坐标,rowSpan和columnSpan则指定widget的大小,这两个参数的的缺省值为1。
addStretch()向Layout Manager中添加“占位符”。
每个widget都有自己的size policy,由其告知layout 系统如何处理该widget外形上的stretch或是shrink。Qt中widget的size policy是通过QSizePolicy类来表示的。每个QSizePolicy由水平和竖直两组size policy组成,最常见的值包括:
Fixed Minimum Maximum Prefered Expanding
除了上述两组size policy外,QSizePolicy中还存储水平和竖直方向的stretch factor,该值用来表明在form尺寸扩展时widget随之扩展的比率。
QMainWindow
应用程序的主窗口是通过创建QMainWindow的派生类来完成的。QMainWindow和QDialog一样,都是派生自QWidget
closeEvent()是由QWidget提供的一个虚函数,在用户关闭窗口时会被自动调用。因此如果要确认是否真正关闭窗口,可以重载这个函数,进行判断
setCentralWidget()将某个Widget设置为主窗口的central widget, 而central widget意味着在显示时会占据主窗口的中央位置。
Qt下的GUI 编程支持多种图形格式。可以使用多种方式为应用程序提供图像,最常见的包括:
1). 将图像存储在文件中,运行时加载之。
2). 在源码中include XPM文件(XPM文件也是合法的C++文件)。
3). 利用Qt的资源机制。
Qt的资源机制比之运行时加载更方便,并对所有支持的图像格式都能良好工作。
为了利用Qt的资源机制,需要创建一个资源文件,并在.pro文件中对应添加一行来对资源文件进行标识。例如:
RESOURCES= spreadsheet.qrc
资源文件本身采用了简单的XML格式。它被编译进程序的可执行文件,因此不会被丢失。在对资源进行定位时,使用路径前缀" :/" ,例如“ :/images/icon.png " 。资源本身可以是任何类型的文件。
Events and signal
在slot函数里,可以用sender()函数知道,signal是哪个对象发送过来的。
Dialog
modeless window--one that runs independently of any other windows in the application
对于modeless dialog ,当其被弹出时,可能处于三种情况:
1). 这是该对话框第一次被激活
2). 该对话框之前曾被激活,但用户又将其关闭
3). 该对话框之前曾被激活,而且仍可见
show() 将一个隐藏窗口变为可见,而activateWIndow()则将窗口的状态变为active。
model window--pops up when invoked and blocks the application,preventing any other processing or interactions until it is closed.
一个dialog若是用show()来激活,则是modeless dialog;若通过exec()来激活,则是model dialog。此外,还可以调用setModel()来设置dialog的显示模式。
QDialog::exec() 的返回至在dialog被确认时为true,否则为false。
在栈上创建 model dialog是一种良好的编程惯例,因为在使用完后就不再需要,而model dialog会在作用域结束后自动被销毁。
由于多数应用程序的About box 都是高度雷同的,Qt中提供了一个方便的static convenicence function QMessage::about(),该函数和QMessageBox::warning()很相似。
另外学习了从QDialog继承下来的几个类的使用,包括QInputDialog,QColorDialog,QFontDialog,QFileDialog。 其中还学习了下QFrame这个类,已经setStyleSheet这个函数改变背景
- PyQt学习笔记01-Qt基本概念进阶篇之窗口布局,对话框
- PyQt学习笔记01-Qt基本概念进阶篇
- QT学习笔记之对话框
- QT 学习笔记 窗口控件的布局
- PyQt学习笔记(8)--QSplitter分割窗口
- Qt笔记·第三篇窗口布局
- PyQt学习笔记(9)--布局管理
- 学习笔记之Qt自定义对话框
- Qt学习之对话框与主窗口的创建
- 《学习Qt之路2》笔记:Qt之文本对话框
- Qt学习笔记--对话框
- Qt学习笔记——窗口的布局
- Qt Designer 布局 (1) PyQt学习基础
- Qt Designer 布局 (2) PyQt学习基础
- Qt Designer 布局 (3) PyQt学习基础
- 《学习Qt之路2》笔记:Qt对话框模式
- qt学习笔记:Qt标准对话框之QInputDialog
- QT学习之三---定义窗口并实现简单布局
- jquery命名隔离
- HTML学习(一)
- python[五]:python爬虫进阶
- 安卓app单webview改为多webview加载网页
- 服务器和客户端的编码问题
- PyQt学习笔记01-Qt基本概念进阶篇之窗口布局,对话框
- Devexpress Spreadsheet 中文教程(4)
- POJ-3252-Round Numbers-组合数学-递推
- mysql重复记录删除其中一条的办法
- redis(源码1):封装hiredis库,提供直观的C++函数操作
- IOS MagicRecord 详解
- Socket游戏编程-五子棋(服务器+多客户端)
- 虚拟机类加载机制
- 扫描Sdcard(外部存储)下所有文件的工具方法