Qt的对话框与窗口--Qt中主要的窗体类及其用途

Qt中主要的窗体类及其用途

    常用的窗体基类是QWidget、QDialog和QMainWindow,在创建GUI应用程序时选择窗体基类就是从这3个类中选择。QWidget直接继承于QObject,是QDialog和QMainWindow的父类,其他继承于QWidget的窗体类还有QSplashScreen、QMdiSubWindow和QDesktopWidget。另外还有一个类QWindow,它同时从QObject和QSurface继承。这些类的继承关系如图所示。

类继承关系
这些窗体类的主要特点和用途如下。

QWidget:在没有指定父容器时可作为独立的窗口,指定父容器后可以作为容器的内部组件。
QDialog:用于设计对话框,以独立窗口显示。
QMainWindow:用于设计带有菜单栏、工具栏、状态栏的主窗口,一般以独立窗口显示。
QSplashScreen:用作应用程序启动时的splash窗口,没有边框。
QMdiSubWindow:用于为QMdiArea提供一个子窗体,用于MDI(多文档)应用程序的设计。
QDesktopWidget:具有多个显卡和多个显示器的系统具有多个桌面,这个类提供用户桌面信息,如屏幕个数、每个屏幕的大小等。
QWindow:通过底层的窗口系统表示一个窗口的类,一般作为一个父容器的嵌入式窗体,不作为独立窗体。

关于窗体类的重要函数

1.setAttribute()函数

setAttribute()函数用于设置窗体的一些属性,其函数原型为:

void  QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)

枚举类型Qt::WidgetAttribute定义了窗体的一些属性,可以打开或关闭这些属性。枚举类型Qt::WidgetAttribute 常用的常量及其意义见表1。

表1 枚举类型Qt::WidgetAttribute 常用的常量
常量意义
Qt::WA_AcceptDrops允许窗体接收拖放来的组件
Qt::WA_DeleteOnClose窗体关闭时删除自己,释放内存
Qt::WA_Hover鼠标进入或移出窗体时产生paint事件
Qt::WA_AcceptTouchEvents窗体是否接受触屏事件

2.setWindowFlags()函数

setWindowFlags()函数用于设置窗体标记,其函数原型是:

void  QWidget::setWindowFlags(Qt::WindowFlags type)

参数type是枚举类型Qt::WindowType的值的组合,用于同时设置多个标记。

另外一个函数setWindowFlag()用于一次设置一个标记,其函数原型为:

void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)

可单独打开或关闭某个属性。枚举类型Qt::WindowType常用的常量值见表2。

表2 枚举类型Qt::WindowType常用的常量
常量意义
表示窗体类型的常量
Qt::Widget这是QWidget类的缺省类型。这种类型的窗体,如果它有父窗体,就作为父窗体的子窗体;否则就作为一个独立的窗口
Qt::Window表明这个窗体是一个窗口,通常具有窗口的边框、标题栏,而不管它是否有父窗体
Qt::Dialog表明这个窗体是一个窗口,并且要显示为对话框(例如在标题栏没有最小化、最大化按钮)。这是QDialog类的缺省类型
Qt::Popup表明这个窗体是用作弹出式菜单的窗体
Qt::Tool表明这个窗体是工具窗体,具有更小的标题栏和关闭按钮,通常作为工具栏的窗体
Qt::ToolTip表明这是用于Tooltip消息提示的窗体
Qt::SplashScreen表明窗体是splash屏幕,是QSplashScreen类的缺省类型
Qt::Desktop表明窗体是桌面,这是QDesktopWidget类的类型
Qt::SubWindow表明窗体是子窗体,例如QMdiSubWindow就是这种类型
控制窗体显示效果的常量
Qt::MSWindowsFixedSizeDialogHint在Windows平台上,使窗口具有更窄的边框,用于固定大小的对话框
Qt::FramelessWindowHint创建无边框窗口
定制窗体外观的常量,要定义窗体外观,需要先设置
Qt::CustomizeWindowHint
Qt::CustomizeWindowHint关闭缺省的窗口标题栏
Qt::WindowTitleHint窗口有标题栏
Qt::WindowSystemMenuHint有窗口系统菜单
Qt::WindowMinimizeButtonHint有最小化按钮
Qt::WindowMaximizeButtonHint有最大化按钮
Qt::WindowMinMaxButtonsHint有最小化、最大化按钮
Qt::WindowCloseButtonHint有关闭按钮
Qt::WindowContextHelpButtonHint有上下文帮助按钮
Qt::WindowStaysOnTopHint窗口总是处于最上层
Qt::WindowStaysOnBottomHint窗口总是处于最下层
Qt::WindowTransparentForInput窗口只作为输出,不接受输入

    Qt::Widget、Qt::Window等表示窗体类型的常量可以使窗体具有缺省的外观设置,如果设置为Qt::Dialog类型,则窗体具有对话框的缺省外观,例如标题栏没有最小化、最大化按钮。

控制窗体显示效果和外观的设置项可定制窗体的外观,例如设置一个窗体只有最小化最大化按钮,没有关闭按钮。

3.setWindowState()函数

    setWindowState()函数使窗口处于最小化、最大化等状态,其函数原型是:

void QWidget::setWindowState(Qt::WindowStates windowState)

枚举类型Qt::WindowState表示了窗体的状态,其取值见表3。

表3 枚举类型Qt:: WindowState的常量
常量意义
Qt::WindowNoState正常状态
Qt::WindowMinimized窗口最小化
Qt::WindowMaximized窗口最大化
Qt::WindowFullScreen窗口填充整个屏幕,而且没有边框
Qt::WindowActive变为活动的窗口,例如可以接收键盘输入

4.setWindowModality()函数

    setWindowModality()函数用于设置窗口的模态,只对窗口类型有用。其函数原型为:

void setWindowModality(Qt::WindowModality windowModality)

枚举类型Qt::WindowModality的取值意义见表4。

表4 枚举类型Qt:: WindowModality的常量
常量意义
Qt::NonModal无模态,不会阻止其他窗口的输入
Qt::WindowModal窗口对于其父窗口、所有的上级父窗口都是模态的
Qt::ApplicationModal窗口对整个应用程序是模态的,阻止所有窗口的输入

5.setWindowOpacity()函数

    setWindowOpacity()函数用于设置窗口的透明度,其函数原型如下:

void QWidget::setWindowOpacity(qreal level)

参数level是1.0(完全不透明)至0.0(完全透明)之间的数。窗口透明度缺省值是1.0,即完全不透明。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值