目录

一、QWidget

 二、QFrame

三、QMainWindow

四、QScrollArea(面板滚动)


层次结构如下:

QObject
  └── QPaintDevice
        └── QWidget
              ├── QMainWindow
              ├── QDialog
              ├── QFrame
              │     ├── QLabel
              │     ├── QSplitter
              │     └── QGroupBox
              ├── QAbstractButton
              │     ├── QPushButton
              │     ├── QCheckBox
              │     └── QRadioButton
              ├── QAbstractScrollArea
              │     ├── QPlainTextEdit
              │     ├── QTextEdit
              │     ├── QTableView
              │     ├── QListView
              │     └── QTreeView
              ├── QMenuBar
              ├── QStatusBar
              ├── QToolBar
              └── QTabWidget

一、QWidget

QWidget 类是所有用户界面对象的基类(如 QLabel 类继承于 QFrame 类,而 QFrame 类又
继承于 QWidget 类)。 Widget 是用户界面的基本单元:它从窗口系统接收鼠标,键盘和其他事件,并在屏幕上绘制自己。每个Widget 都是矩形的,它们按照 Z-order 进行排序。
注: Z-order 是重叠二维对象的顺序,例如堆叠窗口管理器中的窗口。典型的 GUI 的特征
之一是窗口可能重叠,使得一个窗口隐藏另一个窗口的一部分或全部。当两个窗口重叠时,它们的Z 顺序确定哪个窗口出现在另一个窗口的顶部。

 二、QFrame

QFrame 继承 QWidget QFrame 类是有框架的窗口部件的基类,它绘制框架并且调用一个
虚函数 drawContents() 来填充这个框架。这个函数是被子类重新实现的。这里至少还有两个有用的函数:drawFrame() frameChanged()
QFrame *frame = new QFrame(this);
frame->setFrameShape(QFrame::Box);  // 设置框架的形状
frame->setFrameShadow(QFrame::Raised);  // 设置框架阴影效果
frame->setLineWidth(2);  // 设置边框线条宽度
frame->setMidLineWidth(1);  // 设置中间线宽度
frame->resize(200, 150);
frame->show();
  • setFrameShape(QFrame::Shape):设置框架的形状,可以是 BoxPanelHLine(水平线)、VLine(垂直线)等。
  • setFrameShadow(QFrame::Shadow):设置框架的阴影效果,例如 PlainRaised(凸起)或 Sunken(凹陷)。
  • setLineWidth(int):设置框架的外框线宽度。
  • setMidLineWidth(int):设置框架内边的线宽。

三、QMainWindow

QMainWindow 是 Qt 框架中的一个高级窗口类,提供了创建典型应用程序主窗口的功能。它继承自 QWidget,并扩展了主窗口的布局和功能,允许添加菜单栏、工具栏、状态栏以及中央窗口部件等。QMainWindow 是用于构建复杂 GUI 应用程序的基础窗口类。

QMainWindow 的主要特点

  1. 菜单栏 (QMenuBar):用于创建和管理应用程序的菜单(如文件、编辑、帮助等)。

  2. 工具栏 (QToolBar):可以添加包含按钮、下拉菜单等的工具栏,通常用于提供快捷操作。

  3. 状态栏 (QStatusBar):窗口底部的状态栏,用于显示应用程序的状态信息或提示。

  4. 中央窗口部件 (centralWidget):主窗口的主要区域,通常放置一个大的组件,比如文本编辑器、图形视图或复杂的布局。你可以将任何 QWidget 子类设置为 QMainWindow 的中央窗口部件。

  5. 停靠窗口 (QDockWidget):可以创建可停靠的面板,允许用户将面板拖动到主窗口的不同位置,或将其浮动。

QMainWindow 的布局

QMainWindow 的布局是专门为典型的桌面应用程序设计的。它提供了特定的区域来放置不同的组件:

  • 顶部:用于菜单栏(QMenuBar)。
  • 底部:用于状态栏(QStatusBar)。
  • 左右/上下:用于工具栏或停靠窗口(QToolBarQDockWidget)。
  • 中央区域:用于中央部件(centralWidget),这是主窗口的核心显示区域。

四、QScrollArea(面板滚动)

QScrollArea 是 Qt 中用于显示超过窗口尺寸内容的滚动区域,它允许在有限的显示区域内滚动查看包含的控件或内容。QScrollArea 经常用于需要显示大内容的场景,如文本、图片、复杂的控件布局等。

QScrollArea 基本使用

QScrollArea 允许在一个固定大小的窗口内嵌入一个更大的子控件,当子控件的大小超出 QScrollArea 可见区域时,用户可以通过滚动条来查看不可见的部分。 

 样式表:

QScrollBar:vertical {
     width:30px;
	background:white;

  }
  QScrollBar::add-line:verital {
     width:0px;   
  }

  QScrollBar::sub-line:verital {
      
        width:0px;
		heigth:0px;
  }

QScrollBar::handle:vertical {
      background: rgb(200,200,200,50%);
	 border-radius:15px;
  }

QScrollBar::handle:vertical:hover {
      background: rgb(200,200,200,80%);
  }

 今日壁纸:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐