欢迎光临
我们一直在努力

Qt学习日记 Day7:Widget组件+自定义封装组合控件

## 今天学了什么

今天学习QtWidget组件(QListWidget、QTreeWidget、QTableWidget)以及自定义封装组合控件的方法步骤。

##  Widget组件

① QListWidget(列表控件)

定义:一维平铺列表,一行一个条目,适合展示无层级的单列数据;条目:QListWidgetItem

用法:

QListWidgetItem *item=new QListWidgetItem("举头望明月");
ui->listWidget->addItem(item);

item->setTextAlignment(Qt::AlignHCenter); //设置文本居中格式  或者setItemAlignment

② QTreeWidget(树控件)

定义:树形层级结构,支持展开/折叠父子节点,适合目录、层级数据;条目:QTreeWidgetItem

用法:

ui->treeWidget->setHeaderLabels(QStringList() <<"角色"<<"技能");

QTreeWidgetItem *treeitem=new QTreeWidgetItem(QStringList()<<"辅助");
ui->treeWidget->addTopLevelItem(treeitem); //顶层节点

QList<QString> list2;
list2<<"蔡文姬"<<"一技能 治疗";
QTreeWidgetItem *itemChild=new QTreeWidgetItem(list2);

treeitem->addChild(itemChild); //添加子节点

③ QTableWidget(表格控件)

定义:多行多列的表格,单元格形式展示,适合二维表格数据;条目:QTableWidgetItem

用法:

ui->tableWidget->setColumnCount(3);
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"年龄"<<"职业");
ui->tableWidget->setRowCount(2);

//添加内容

ui->tableWidget->setItem(0,0,new QTableWidgetItem(“张飞”));

共同点:

  • 都属于Item-based 现成视图控件,继承自Widget,可直接拖UI或new使用;
  • 内部自带封装好的Model,开箱即用,无需自定义Model;
  • 通过各自的xxxItem来管理每一项的内容、样式;
  • 支持选中、点击、信号槽等基础交互;

区别:

展示结构不同:

  • QListWidget:一维平铺
  • QTreeWidget:层级父子树结构(可展开折叠)
  • QTableWidget:二维多行多列表格

添加条目的接口不同:

  • QListWidget:addItem
  • QTreeWidget:addTopLevelItem,子节点用addChild
  • QTableWidget:setItem(行,列,item)

使用场景不同:

  • QList:简单单列清单
  • QTree:目录、层级关系(文件树)
  • QTable:表格、台账(类似Excel)

注:QListView/QTreeView/QTableView:纯视图,无内置Model,必须自己写自定义Model。

## 自定义封装组合控件

步骤:

① 添加新文件

② 设置封装控件

③ Widget中使用  –右键–提升为(提升操作,要求Designer中的基类,必须和自定义控件继承的父类保持一致;间接继承的不能随便跨级提升。)

④ 根据需求实现功能。

赞(0)
未经允许不得转载:171主机测评 » Qt学习日记 Day7:Widget组件+自定义封装组合控件
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址