跳至主要內容

Qt

LincZero大约 2 分钟

Qt

目录

Item类(视图类)

Item Views,项目视图(Model-Based)

Item Views与Item Widgets很像,但前者需要基于数据库而后者不需要

  • List View,清单视图
  • Tree View,树形视图
  • Table View,表视图
  • Column View,列视图
  • Undo View

Item Widgets,项目控件(Item-Based)

Item Views与Item Widgets很像,但前者需要基于数据库而后者不需要

  • List Widget,列表控件
    • 使用1:添加一项(每项是一个QListWidgetItem
      • (1) 先创建一个项,QListWidgetItem * item = new QListWidgetItem("First Item");
      • (2) 将项放入List Widget,ui->listWidget->addItem(item);
      • 其他:项设置水平居中,item->setTextAlignment(Qt::AlignHCenter);
    • 使用2:添加多项(QString ListQList<QString>
      • (1) 创建一个列表,QStringList list; list << "First" << "Seconed" << "Thrid";
      • (2) 将列表放入List Widget,ui->listWidget->addItems(list);
      • 其他:但该方法不能做居中
  • Tree Widget,树控件
    • 使用:(每项是一个QTreeWidgetItem
      • (1) 设置水平头,ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"介绍");
      • (2) 创建树节点(根/子节点),QTreeWidgetItem * parItem = new QTreeWidgetItem(QString()<<"力量");
      • (3) 加载根节点,ui->treeWidget->addTopLevelItem(liItem);
      • (4) 追加子节点,liItem->addChild(subItem);
  • Table Widget,表格控件
    • 使用:(每一项是一个QTableWidgetItem
      • (1) 设置列数,ui->tableWidget->setColumnCount(3);
      • (2) 设置水平表头,ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
      • (3) 设置行数,ui->tableWidget->setRowCount(5);
      • (4) 设置内容,ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));

模型/视图结构(见另一章)

略,见另一章

Item拖拽、界面中存储数据、Qt::UserRole的使用

Item拖拽

参考NodeEditor程序

界面中存储数据

详见 https://blog.csdn.net/sajdhfkjidkgjo/article/details/104685538/

常见接口

Qt中,可以通过绝大部分已有的接口来存数数据、获取数据。例如:

  • 存储数据
    • setData()
    • setItemData()
    • setUserData()
  • 获取数据:
    • data()
    • itemData()
    • userData()

常用的基本就这些,当然,还有其他的一些接口

Qt::UserRole的使用

详见 https://blog.csdn.net/sajdhfkjidkgjo/article/details/104685538/

单独存储

通过setData(),我们可以单独存储用户数据,使用Qt::UserRole、Qt::UserRole + 1……

整体存储

也可以通过setData()进行整体存储,这时候只需要使用Qt::UserRole即可,把用户数据当成一个结构体来存储。

setItemData()和itemData()

setUserData()和userData()