Qt杂谈

本文主要探讨了Qt的各种组件和数据类型,包括QListWidget、QStyledItemDelegate、QTableView、QRecord及其关联的QSqlFiled,还有QThread、QCompleter、QPushButton等。讲解了如何设置选择行为、数据封装、线程执行、自动补全功能,以及窗口置顶、路径处理和事件过滤器等实用技巧。
摘要由CSDN通过智能技术生成

知识点


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.textbutton.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()获取系统特定的id
  • currentThread()返回QThread指针.

QCompleter

  • setModel()直接加载model进入 直接加载model真的屌
  • setCaseSensitivity()设置区分是否区分大小写
  • setMaxVisibleItems(int n)设置最多显示的条目, 如果不设置小于大概5条会有滚动条,如果设置,则会显示N个条目后再有滚动条

QComboBox

  • setCompleter()加载自动补全. comboBox居然也支持自动补全好爽

QPushButton

  • setDefault(bool) 只能在dilaog了里面设置才有效果

QDataStream

QDataStream Out();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值