赞
踩
对于日常见到的应用程序而言,许多都是基于主窗口的,主窗口包含了菜单栏、工具栏、状态栏和中心区域等。
QT/PyQt中提供了以QmainWindow类为核心的主窗口框架,它包含了众多相关的类,它们的继承关系如下图所示:
QMainWindow 类继承自 QWidget 类, 因此主窗口就是一个普通的部件,只不过主窗口拥有自已的布局,在主窗口中特定的位置只能添加特定的子部件而已。 因为主窗口有自已的布局,因此不能在主窗口上设置布局管理器。
下图为主窗口的布局:
QMenu 和 MenuBar 类都继承自 QWidget。
所有权的意义:比如部件 1 若拥有部件 2 的所有权,则当部件 1 被删除(销毁)时,会删除部件 2
QKeySequence 是一个单独的父类,未继承其他类。
QList<QKeySequence> qs;
qs<<QKeySequence::listFromString("Ctrl+D");
qs<<QKeySequence::listFromString("Ctrl+E"); //此时按下 Ctrl+D 和 Ctrl+E 会执行相同的操作
内容比较多,具体可以参考官方链接https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtgui/qkeysequence.html?highlight=sequenceformat##SequenceFormat
以下属性除了 checked 的相关信号是 void toggled(bool)信号外,其他属性都是 void changed()
信号。
参考官方文档https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtwidgets/qmenu.html?highlight=qmenu#QMenu
参考官方文档https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtwidgets/qmenu.html?highlight=qmenu#QMenu
菜单栏通常不需要手动布局,默认会自动将菜单栏设置到父部件的顶部,并在父部件大小调整时调整其大小。
使用 QMenuBar::addMenu()函数可把菜单添加到菜单栏上。
参考官方文档https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtwidgets/qmenubar.html?highlight=qmenubar
参考官方文档https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtwidgets/qmenubar.html?highlight=qmenubar
QToolBar 类提供了一个可移动的带有一组控件的面板。 由于 QToolBar 就是一个 QWidget部件,默认情况下,该部件就是一个 QWidget,在其中没有任何内容,因此要使 QToolBar类有意义,需要向其中添加项目
因为 QToolBar 类的大部分属性需要在 QWindowMain 类中才有意义,因此本小节只讲解工具栏位于 QWindowMain 之中的情形
工具栏可以被固定在某个位置(比如窗口顶部),也可在工具栏区域内移动。相关函数有setMovable()、 isMovable()、 allowedAreas()、 isAreaAllowed()
若工具栏无法显示所包含的所有项目时,会在工具栏上显示一个扩展按钮(如图)
向工具栏中添加项目的方法
按下工具栏按钮时会发送 actionTriggered()信号
工具栏的三种属性:可移动、可放置区域、可作为独立窗口(浮动状态),见下图
参考官方文档https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtwidgets/qtoolbar.html?highlight=qtoolbar
参考官方文档https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtwidgets/qtoolbar.html?highlight=qtoolbar
状态栏主要用于向向户显示一些程序的状态信息,状态栏通常位于窗口底部
由于状态栏就是一个 QWidget 部件,默认情况下,状态栏什么也不会显示,因此需要自行编写代码处理状态栏上显示的信息,比如需要处理当鼠标进入某个部件时在状态栏显示该部件的一些信息,当离开时清除该信息的显示等。
由于 QMainWindow(主窗口)已经由 Qt 内部实现了状态栏的功能(比如状态位始终位于窗口底部,当鼠标进入部件时显进信息,离开时清除信息等),因此在主窗口中使用状态栏更方便,当然程序员也可以实现自已的状态栏(见后文)。
主窗口(QMainWindow)只能有一个状态栏。使用 QMainWindow::setStatursBar()函数可设置状态栏。
状态栏可以显示 3 种类型的信息,
QDockWidget 实现了可停靠窗口,可停靠窗口可以停靠在主窗口中,也可作为一个浮动窗口使用,见下图
在主窗口中的可停靠窗口还可重叠和嵌套,见下图
由于 QDockWidget 就是一个 QWidget 部件,默认情况下,该部件只提供了一个有标题栏的框架窗口样式,在其中没有任何内容,因此要使 QDockWidget 类有意义,需要向其中添加部件,使用 QDockWidget::setWidget()函数可向其中添加部件
QDockWidget 也是由多个对象组合而成的部件,没有任何 QWidget 部件的可停靠窗口
void topLevelChanged(bool topLevel); //信号
当 floating 属性改变时,发送此信号,若可停靠窗口当前是浮动的,则 topLevel 为 true,否则为 false。
void visibilityChanged(bool visible); //信号
当可停靠窗口变得可见或不可见时,发送此信号。 当在重叠的可停靠窗口中切换其选项卡使可停靠窗口可见或不可见时,也会发送此信号。
void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas); //信号
当 allowedAreas 属性(即允许放置的区域)更改时,发送此信号, allowedAreas 为更改后的新区域。
void dockLocationChanged(Qt::DockWidgetArea area); //信号
当可停靠窗口移动到另一个可停靠区域或移动到当前可停靠区域的另一位置时,发送此信号,当以编程的方式改变位置时,也会发送此信号。
void featuresChanged(QDockWidget::DockWidgetFeatures features); //信号
当 features 属性改变时,发送此信号,参数 features 为改变后的新值。
主窗口把前面各小节讲解的部件组织在一个窗口中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。