继承关系:

  • QObject:

    • QWidget

      • QDialog
      • QMainWindow
      • QSplashScreen
      • QMdiSubWindow
      • QDesktopWidget
    • QWindow
  • QWidget: 在没有指定父容器时,可作为独立窗口。指定父容器后可以作为容器的内部组件。

  • QDialog: 用于设计对话框,以独立窗口显示。

  • QMainWindow: 用于设计带有菜单栏、工具栏、状态栏的主窗口,一般以独立窗口显示。

  • QSplashScreen: 用作应用程序启动时的splash窗口,没有边框。

  • QMdiSubWindow: 用于为QMdiArea提供一个子窗体,用于MDI(多文档)的设计。

  • QDesktopWidget: 具有多个显卡和多个显示器的系统具有多个桌面,这个类提供用户桌面信息,如屏幕个数、每个屏幕的大小等。

  • QWindow: 通过底层的窗口系统表示一个窗口的类,一般作为一个父容器的嵌入式窗体,不作为独立的窗体。

设置窗体的 运行特性 和 显示特性:

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

  • Qt::NonModal: 无模态,不会阻止其他窗口的输入
  • Qt::WindowModal: 窗口对其父窗口、所有的上级父窗口都是模态的
  • Qt::ApplicationModal: 窗口对整个应用程序是模态的,阻止所有窗口的输入

void QWidget::setWindowOpacity(qreal level)
参数 level 是 1.0(完全不透明) 至 0.0(完全透明)之间的数。窗口透明度缺省值是1.0

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

  • Qt::WA_AcceptDrops: 允许窗体接收拖放来的组件
  • Qt::WA_DeleteOnClose: 窗体关闭时删除自己,释放内存
  • Qt::WA_Hover: 鼠标进入或移出窗体时产生paint事件
  • Qt::WAAcceptTouchEvents: 窗体是否接受触屏事件

void QWidget::setWindowFlags(Qt::WindowFlags type)
表示窗体类型的常量

  • Qt::Widget: 这就是QWdiget类的缺省类型。如果它有父窗体,就作为父窗体的子窗体;否则就作为独立的窗口。
  • Qt::Window: 表明是一个窗口,通常具有边框、标题栏。
  • Qt::Dialog: 是一个窗口,并且显示为对话框(例如在标题栏没有最小化、最大化按键)
  • Qt::Popup: 这个窗体是用作弹出式菜单的窗体
  • Qt::Tool: 是工具窗体,具有更小的标题栏和关闭按钮,通常作为工具栏的窗体
  • Qt::ToolTip: 用于 Tooltip 消息提示的窗体
  • Qt::SplashScreen: 窗体是splash屏幕,是QSplashScreen类的缺省类型
  • Qt::Desktop: 窗体是桌面,这是QDesktopWidget类的类型
  • Qt::SubWindow: 是子窗体,例如 QMdiSubWindow 就是这种类型

控制窗体显示效果:

  • Qt::MSWindowsFixedSizeDialogHint: 在windows平台上,使窗口具有更窄的边框,用于固定大小的对话框
  • Qt::FramelessWindowHint: 创建无边框窗口

WindowHint要定义窗体外观,需要先设置 Qt::Customize

  • Qt::CustomizeWindowHint: 关闭缺省的窗口标题栏
  • Qt::WindowTitleHint: 窗口有标题栏
  • Qt::WindowSystemMenuHint: 有窗口系统菜单
  • Qt::WindowMinimizeButtomHint: 有最小化按钮
  • Qt::WindowMaximizeButtomHint:
  • Qt::WindowMinMaxButtonsHint:
  • Qt::WindowCloseButtonHint:
  • Qt::WindowContextHelpButtonHint:
  • Qt::WindowStaysOnTopHint: 窗口总是处于最上层
  • Qt::WindowStaysOnBottomHint: 窗口总是处于最下层
  • Qt::WindowTranspartentForInput: 窗口只作为输出,不接受输入