知识点
QListWidget
- 返回全部选中项
QListWidget::seleteItems()
;
QStyledItemDelegate 委托类
createEditor
创建小部件,在编辑状态下显示.setEditorData
设置小部件值setModelData
对应的设置model的值updateEditorGeometry
更新小部件布局paint(很多参数)
委托的绘画事件,如果想不在编辑状态也可以显示,就要用绘画事件来处理部件,其中用QStyleOptionXXX(XXX为部件的名称)
来构造,可以查询QStyleOption
来进行具体查询拥有的组件editorEvent(很多参数)
委托事件,只有在编辑的状态下触发事件,但是就算不在编辑状态下也会触发鼠标事件,例如:移动,单击等事件.- 绘制按钮需要有一个实例的QPushButton来承载
QApplication::style()->drawControl(QStyle::CE_PushButton, &button, painter, m_pSubmitButton)
,如果这个不能很好的显示则可以用m_pSubmitButton->style()->drawControl(QStyle::CE_PushButton, &button, painter, m_pSubmitButton)
用控件直接设置 - 绘制的时候用
CE_PushButtonLabel
绘制的时候.需要设置button.text
和button.iconsize
这个属性默认为了-1,-1是无效的,需要手动设置,然后再设置button.icon
设置好图片即可 - 绘画的时候需要计算绘制区域.因为用到了三个图片:none,hover,press三个状态所以需要计算绘制区域.不然none状态的图片不好返回.
- 如果委托无法显示hover状态图片,需要部件设置
setMouseTracking(true)
鼠标追踪为真 - 委托进度条之后要更新进度的话,直接设置model.data就是画进度条的索引位置22
QTableview
setSelectionBehavior
设置选择行为,多选之类的setSectionResizeMode(int index, ResizeMode mode)
设置index的显示模式,用户是否可拉伸,自动调整完全显示内容等.
QRecord
- 数据封装类,可返回字段数量.名称.下级有QSqlFiled,是为具体的字段.
QSqlFiled
- 用QRecord返回字段,可检查值.
QMap
- 遍历时候比较奇葩.必须要要java迭代或者stl迭代,不用能用for之类的迭代
QThread
- 执行线程需要子类化QThread,因为线程需要run函数执行.
- 信号:
- 开始信号
started()
- 结束信号
finished()
; - 终止信号
terminated()
; // 是人工手动停止.
- 开始信号
currentThreadId()
获取系统特定的idcurrentThread()
返回QThread指针.
QCompleter
setModel()
直接加载model进入 直接加载model真的屌setCaseSensitivity()
设置区分是否区分大小写setMaxVisibleItems(int n)
设置最多显示的条目, 如果不设置小于大概5条会有滚动条,如果设置,则会显示N个条目后再有滚动条
QComboBox
setCompleter()
加载自动补全. comboBox居然也支持自动补全好爽
QPushButton
setDefault(bool)
只能在dilaog了里面设置才有效果
QDataStream
QDataStream Out();