目录
一、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)
:设置框架的形状,可以是Box
、Panel
、HLine
(水平线)、VLine
(垂直线)等。setFrameShadow(QFrame::Shadow)
:设置框架的阴影效果,例如Plain
、Raised
(凸起)或Sunken
(凹陷)。setLineWidth(int)
:设置框架的外框线宽度。setMidLineWidth(int)
:设置框架内边的线宽。
三、QMainWindow
QMainWindow
是 Qt 框架中的一个高级窗口类,提供了创建典型应用程序主窗口的功能。它继承自 QWidget
,并扩展了主窗口的布局和功能,允许添加菜单栏、工具栏、状态栏以及中央窗口部件等。QMainWindow
是用于构建复杂 GUI 应用程序的基础窗口类。
QMainWindow
的主要特点
-
菜单栏 (
QMenuBar
):用于创建和管理应用程序的菜单(如文件、编辑、帮助等)。 -
工具栏 (
QToolBar
):可以添加包含按钮、下拉菜单等的工具栏,通常用于提供快捷操作。 -
状态栏 (
QStatusBar
):窗口底部的状态栏,用于显示应用程序的状态信息或提示。 -
中央窗口部件 (
centralWidget
):主窗口的主要区域,通常放置一个大的组件,比如文本编辑器、图形视图或复杂的布局。你可以将任何 QWidget 子类设置为QMainWindow
的中央窗口部件。 -
停靠窗口 (
QDockWidget
):可以创建可停靠的面板,允许用户将面板拖动到主窗口的不同位置,或将其浮动。
QMainWindow
的布局
QMainWindow
的布局是专门为典型的桌面应用程序设计的。它提供了特定的区域来放置不同的组件:
- 顶部:用于菜单栏(
QMenuBar
)。 - 底部:用于状态栏(
QStatusBar
)。 - 左右/上下:用于工具栏或停靠窗口(
QToolBar
和QDockWidget
)。 - 中央区域:用于中央部件(
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%);
}
今日壁纸: