Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看 活动详情

从Qt4开始引进了一些标准部件来提供基于项的容器部件,它们的底层是通过模型/视图框架实现的。

  • QListWidget: 提供了一个项目列表部件。
  • QTreeWidget: 提供了一个多层次的树结构部件。
  • QTableWidget: 提供了一个以项目作为单元的表格部件。 它们都继承了QAbstractItemView类的行为。它们之所以被成为便捷类,是因为它们使用起来比较简单,适合存储和显示少量的数据。
  • 它们没有将视图和模型进行分离,没有视图类灵活,不能和任意的模型一起使用。所以建议如果数据存储和显示风格简单选用便捷类,如果实现自定义、复杂的数据展示选择视图类。

    这些部件都可以在Qt的设计窗口中找到,用的时候可以直接拖拽使用,也可以使用代码的方式使用。

    QListWidget的使用:

    单层的列表一般使用QListWidget来显示,里面的单元使用QListWidgetItem来表示,一个列表部件可以像一般的窗口那样进行创建。在创建QListWidgetItem时可以将它直接添加到已经创建的列表部件中,也可以通过 insertItem() 函数来添加。

    列表中的每一个项目都可以显示一个文本标签和一个图标,还可以给项目添加提示。默认列表中的项目会根据项目的添加顺序进行排序,也可以通过 sortItems() 函数对项目进行排序。

    QListWidget listWidget;
    //一种添加项目的简单方法
    new QListWidgetItem("a", &listWidget);
    //添加项目的另一种方法,可以进行各种设置
    QListWidgetItem *listWidgetItem = newQListWidgetItem;
    listWidgetItem->setText("b");
    listWidgetItem->setIcon(QIcon("image/b.png"));
    listWidgetItem->setToolTip("this is b!");
    listWidgetItem.insertItem(1, listWidgetItem);
    //设置列表排序为倒序
    listWidget.sortItems(Qt::DescendingOrder);
    
  • Qt::DescendingOrder:按字母降序排序
  • Qt::AscendingOrder:按字母升序排序
  • QTreeWidget的使用:

    树或者项目的层次列表由QTreeWidget和QTreeWidgetItem类提供,树部件中的每一个项目都可以有他自己的子项目,而且可以显示多列。添加项目前必须先使用setColumnCount() 函数设置列的个数。

    QTreeWidget treeWidget;
    //必须要设置列数
    treeWidget.setColumnCount(2);
    //设置标头
    QStringList headers;
    headers << "name" << "year";
    treeWidget.setHeaderLabels(headers);
    //添加项目
    QTreeWidgetItem *grade1 = new QTreeWidgetItem(&treeWidget);
    grade1->setText(0, "Grade1");
    QTreeWidgetItem *student1 = new QTreeWidgetItem(grade1);
    student1->setText(0, "Tom");
    student1->setText(1, "1996");
    QTreeWidgetItem *grade2 = new QTreeWidgetItem(&treeWidget,grade1);
    grade2->setText(0, "Grade2");
    

    QTableWidget的使用:

    项目表格使用QTableWidget和QTableWidgetItem来构建,它提供了一个包含标头和项目的可滚动表格部件。表格一般在构造时就指定它的行数和列数,项目可以在表格外先构建,然后添加到表格中的指定位置。表格项目还可以做水平标头或垂直标头。

    //创建表格部件,同时指定行数和列数
    QTableWidget tableWidget(3, 2);
    //创建表格项目,并插入到指定单元
    QTableWidgetItem *tableWidgetItem = new QTableWidgetItem("qt");
    tableWidget.setItem(1, 1, tableWidgetItem);
    //创建表格项目,并将它们作为标头
    QTableWidgetItem *headerV = new QTableWidgetItem("first");
    tableWidget.setVerticalHeaderItem(0, headerV);
    QTableWidgetItem *headerH = new QTableWidgetItem(ID);
    tableWidget.setHoriaontalHeaderItem(0, headerH);
    复制代码
    分类:
    后端
    标签: