包含Qt5.9所有基本控件的操作,信号和槽函数,和QSS样式
后面将利用Qt5.9和MITK或者MTK库做一个医疗图像处理APP
1. Signal and slot
2. QWidget基类
2.1 QRect 常用于定义Geometry;可包含长宽和位置信息
2.2 QSize(int w, int h)
3. Qstring 和编码方式
4. Qlabel
Content
- 文字
- 图片和动图 – Qpixmap; QMovie
- 富文本(超链接)
Signal
- 富文本超链接
- linkActivated
- linkHovered
format
- selectable
- editable
5. QPushButton
Signal
- click
- press
format
- setShortcut
6. QLineEdit
Content
- 输入验证 (QValidator:整数,双精度,正则)
- 掩码校验(setInputMask)
Signal
- editingFinished 按下回车 焦点移开
- returnPressed 格式有效
- textChanged 可以被setText激发
- textEdited 不可以被setText激发
Format
- seText()
- setPlaceholderText()
- setClearButtonEnabled
- setReadOnly
- setMaxLength
slot
- undo() 撤销
- redo() 恢复
7. 遍历节点(控件)名称(className)
Content:
- children()找到主控件下面的所有控件
- QObject是所有类的基类
- QWidget 是所以UI控件的基类
- Objectname控件名称 QMetaObject -> classNames控件类型
- FindChildren(QString)
8. Layout
[vertical/horizontal…]Layout类不是QWidget的子类,所以不是用于显示UI
代码表示的时候,需要为它创建一个QWidget作为容器
Content
- Vertical
- Horizontal
- Grid
- Form
Layout
- setContentsMargin (int u, int bot, int lef, int right)
- setSpacing (每个元素之间距离)
- addWidget;
for grid: (QWidget*, int row, int column, Qt::Alignment)
for form: addRow(也可以用来添加layout) insertrow
QLayoutItem* itemAt(int row, ItemRole role) const
Rowcount用于遍历所有表单内容
Widget组件
- setLayout
- setMinimumSize(int,int) //设置最大尺寸和最小尺寸
- setMaximumSize(int,int)
- sizeHint 推荐尺寸 只能重载,不能修改
GrowFlag 必要时可以超过推荐尺寸
ExpandFlag >=sizeHint()
ShrinkFlag <=sizeHint()
IgnoreFlag
Fixed 0
Minimun GrowFlag
Maximum ShrinkFlag
Preferred GrowFlag|ShrinkFlag
Expanding GrowFlag|ShrinkFlag|ExpandFlag //尽量缩放,最小等于推荐大小
MinimumExpanding GrowFlag|ExpandFlag
Ignored ShrinkFlag|GrowFlag|IgnoreFlag //尽量缩放,最小可以小于推荐大小
9. QCheckBox
Content
- 支持快捷键,继承QAbstractButton
- Text, setText
- Bool isChecked() const
- Toggle(bool)
- setAutoExclusive 单选设定; 对于同一个widget层级的
signal
- clicked
- toggle
-
10. from login to MainWindow
methods
- Add dialog for QFormLayout
- If no interaction, use splashScreen
- splashScreen can also be used for loading
- different application in UI can be accomplished by QStackWidget
11. QButtonGroup
Content
- setExclusive 默认单选
- 把checkbox或者按钮看做一个组,统一设置
- checkButton()返回checked的按钮
- AddButton 加入group
- Button()遍历button,返回列表
signal
- buttonClicked
- buttonPressed
- buttonReleased
- buttonToggled
12 QRadioButton
Content
- 和QCheckBox类似
- 点击pushbutton可以获取radiobutton对应的值
13. QComboBox下拉列表
Content
- Editable
- Item可加入图标
- Additem() 可以加入QStringList,一次添加
- 往结尾处添加,每次刷新添加需要把之前的删掉
- InsertItem()
- removeItem(int index)
Signal
- activated() 只有用户点击才计划
- currentIndexChanged() 用户选中和代码调用
- currentTextChanged()
- editTextChanged()
- highlighted() 鼠标悬浮在选项上时
14. QVariant
Content
- QVairant Var
- T value
- void setValue(const T &value) (var.setValue(value))
- QString s = v.value<QString>();
- Q_DECLARE_METATYPE(Test)
-
15 QSlider
Content
- setRange(int min, int max)
- setMaximum
- setMinimum
- setSingleStep 键盘移动的步长
- setPageStep鼠标点击后移动的步长
- setOrientation Horizontal Vertical
-
signal
- sliderMoved(int value) 拖动滑动条
- sliderPressed() 点击事件
- sliderReleased()
- valueChanged(int value)
format
- QSlide::groove 滑动条
- QSlide::handle 拖动按钮
- Qslider:add-page 按钮右边滑动条
- QSlider::sub-page 按钮左边滑动条
16 通过UI designer 提升为:
使用代码中重载的控件类型
可以改变控件的基类为代码中overload的基类
17. QListWidget
Content
- 显示一列数据
- SelectionMode 单选/多选/不能选/连续选择ctrl+点击选择两者之间全部/extendedSelection ctrl+点击选择多个
- Flow从上下还是左右
- gridSize
- iconSIze图标的宽高
- sortingEnabled内置排序算法
- QListWidgetItem
- InsertItem(int row, listWidget)
- AddItem()
-
Signal:
18. QTableWidget
Content
- horizontalHeader() verticalHeader()
- setVerticalScrollBarPolicy
- selectionMode
- setSelectionBehavior 选择行 列 或一项
- setCornerButtonEnabled
- setSHowGrid setGridStyle
- setSortingEnabled
19 QTreeWidget
Content
- header()->setVisible
- setSortingEnabled
- setAnimated
- setVerticalScrollBarPolicy setHorizontalScrollBarPolicy
- selectionMode
- setSelectionBehavior
20 Qdialog
Content
- QColorDialog
- QErrorDialog
- QFileDialog
- QFontDialog
- QInputDialog
- QMessageDialog
- QProgressDialog
- Exec()阻塞
- 阻塞以事件结束后有返回值(slot)
- Accept()/reject()/done()
21 QMainWindow
Content
- QT菜单
QMenuBar
New QMenubar(this)
QMenu
addMenu
QAction
addAction
QActionGroup
addAction
setExclusive(True)
setCheckable(True)
menu->exec(QCurosr::pos()) 显示菜单 的位置
setShortCut(QString()) 为QAction添加快捷键
signal
- triggered(QAction*) 包含菜单与其所有子节点 放在menubar可以找到对应menu 和 action;放在menu只能获取对应action
- triggered()
- hover(QAction*)
QToolBar
- 是可以在控件中移动的
- 可以有多个工具栏
- 如果加了menubar之后,menubar不能为0
- AddToolBar(Qt::TopToolBarArea, mainToolBar)
- LeftToolBarArea = 0x01
- RightToolBarArea = 0x02
- TopToolBarArea = 0x03
- BottomToolBarArea = 0x04
- setToolButtonStyle
ToolButtonIconOnly
ToolButtonTextOnly
ToolButtonTextBesideIcon
ToolButtonTextUnderIcon
QStatusBar
- 宽口下方 显示窗口状态
22. Event事件
Content
- 鼠标事件
QMouseEvent
相对坐标 相对于widget位置
QPoint windowPos()程序窗口坐标
ScreenPose() 屏幕位置
mapToGlobal(ev->pos())转为屏幕坐标
QCursor::pos() 屏幕坐标
EnterEvent(QEvent* )
leaveEvent(QEvent* )
mouseDoubleClickEvent(QMouseEvent)
mouseMoveEvent(QMouseEvent* event) 当setMouseTrack为True
mousePressEvent(QMouseEvent* event)
mouseReleaseEvent(QMouseEvent* event)
- 键盘事件
QKeyEvent()
keyPressEvent
keyReleaseEvent
- 窗口大小变化事件
- 重绘事件QPainter
- Bool event(QEvent *e)
- 返回True处理下一个事件
- 返回False本事件下一个处理函数
- 重载键盘事件举例