北京公司网站建设报价如何做网站地图txt

当前位置: 首页 > news >正文

北京公司网站建设报价,如何做网站地图txt,室内设计师找图片的网站,推荐一些外国做产品网站目录 一、QTreeWidget 概述 二、QTreeWidget 的基本使用 2.1、创建 QTreeWidget 控件 2.2、设置 QTreeWidget 的大小和位置 2.3、设置 QTreeWidget 的列数和列标题 2.4、添加节点 2.5、读取节点 2.6、设置节点数据 2.7、自定义节点样式 三、注意事项 四、完整示例 一…目录 一、QTreeWidget 概述 二、QTreeWidget 的基本使用 2.1、创建 QTreeWidget 控件 2.2、设置 QTreeWidget 的大小和位置 2.3、设置 QTreeWidget 的列数和列标题 2.4、添加节点 2.5、读取节点 2.6、设置节点数据 2.7、自定义节点样式 三、注意事项 四、完整示例 一、QTreeWidget 概述 QTreeWidget是Qt中一个用于显示树形结构数据的控件它继承自QTreeView可以显示多列数据和树形结构的层次关系还提供了许多交互功能。可以支持单选、多选和可编辑的节点还可以自定义节点的样式和布局。除此之外QTreeWidget 还支持信号和槽机制可以方便地处理节点的操作事件如点击、双击、选择等等。 头文件:  #include QTreeWidget qmake: QT widgets 继承: QTreeView 二、QTreeWidget 的基本使用 2.1、创建 QTreeWidget 控件 使用 QTreeWidget 控件前首先需要在代码中创建 QTreeWidget 实例。代码如下 QTreeWidget *tree new QTreeWidget();这里创建了一个 QTreeWidget 实例并将其保存在 tree 指针中。此时tree 控件还没有设置显示大小和位置需要设置它们才能正常显示。 2.2、设置 QTreeWidget 的大小和位置 在 Qt 中可以使用 QWidget::resize() 和 QWidget::move() 函数来设置控件的大小和位置。代码如下 tree-resize(400, 300); // 设置控件大小为 400 x 300 tree-move(100, 100); // 设置控件在窗口中的位置为 (100, 100)这里设置了 tree 控件的大小为 400 x 300 像素并将其移动到窗口的 (100, 100) 像素处。 2.3、设置 QTreeWidget 的列数和列标题 QTreeWidget 可以显示多列数据可以使用 QTreeWidget::setColumnCount() 和 QTreeWidget::setHeaderLabels() 函数来设置列数和列标题。代码如下 tree-setColumnCount(2); // 设置列数为 2 tree-setHeaderLabels({Name, Value}); // 设置列标题为 Name 和 Value这里设置了 tree 控件的列数为 2列标题分别为 Name 和 Value。 2.4、添加节点 QTreeWidget 中的每个节点都是一个 QTreeWidgetItem 实例可以使用         QTreeWidget::addTopLevelItem()、QTreeWidgetItem::addChild() 和         QTreeWidget::insertTopLevelItem() 函数来添加节点。代码如下 QTreeWidgetItem *root new QTreeWidgetItem(tree); // 创建一个根节点 root-setText(0, Root); // 设置节点文本 root-setText(1, 0); // 设置节点文本 tree-addTopLevelItem(root); // 将节点添加到 QTreeWidget 中QTreeWidgetItem *child1 new QTreeWidgetItem(root); // 创建一个子节点 child1-setText(0, Child 1); // 设置节点文本 child1-setText(1,10); // 设置节点文本 root-addChild(child1); // 将节点添加到根节点下QTreeWidgetItem *child2 new QTreeWidgetItem(root); // 创建另一个子节点 child2-setText(0, Child 2); // 设置节点文本 child2-setText(1, 20); // 设置节点文本 tree-insertTopLevelItem(0, child2); // 将节点插入到 QTreeWidget 的第一个位置这里创建了一个根节点 root其文本为 Root 和 0并将其添加到 QTreeWidget 中。然后创建了两个子节点 child1 和 child2分别作为 root 的子节点并设置其文本。注意要将子节点添加到父节点中可以使用 QTreeWidgetItem::addChild() 函数或 QTreeWidget::insertTopLevelItem() 函数。 2.5、读取节点 可以使用 QTreeWidget::topLevelItem() 和 QTreeWidgetItem::child() 函数来读取节点。代码如下 QTreeWidgetItem *item tree-topLevelItem(0); // 获取第一个根节点 if (item) {QString text1 item-text(0); // 获取节点的第一列文本QString text2 item-text(1); // 获取节点的第二列文本qDebug() text1 text2; // 输出节点文本QTreeWidgetItem *child item-child(0); // 获取根节点的第一个子节点if (child) {QString text3 child-text(0); // 获取子节点的第一列文本QString text4 child-text(1); // 获取子节点的第二列文本qDebug() text3 text4; // 输出子节点文本} } 这里先获取了 QTreeWidget 的第一个根节点并输出其文本。然后获取根节点的第一个子节点并输出其文本。 2.6、设置节点数据 QTreeWidgetItem 可以存储自定义数据可以使用 QTreeWidgetItem::setData() 函数来设置节点的数据。代码如下 QTreeWidgetItem *item tree-topLevelItem(0); // 获取第一个根节点 if (item) {item-setData(2, Qt::UserRole, custom data); // 设置第三列的自定义数据 } // 读取节点数据可以使用item-data(2, Qt::UserRole).toString(); 这里设置了根节点的第三列数据为 custom data。 2.7、自定义节点样式 QTreeWidget 的节点可以根据需求进行自定义样式的设置。可以使用 QTreeWidget::setItemDelegate() 函数来设置 QItemDelegate从而实现节点样式的自定义。代码如下 class MyDelegate : public QItemDelegate { public:MyDelegate(QObject *parent nullptr) : QItemDelegate(parent) {}void paint(QPainter *painter, const QStyleOptionViewItem option, const QModelIndex index) const override {QStyleOptionViewItem opt option;if (opt.state QStyle::State_Selected) {painter-fillRect(opt.rect, opt.palette.highlight());opt.palette.setColor(QPalette::Text, opt.palette.highlightedText().color());}painter-drawText(opt.rect, Qt::AlignVCenter | Qt::AlignLeft | Qt::TextWordWrap, index.data(Qt::DisplayRole).toString()); } }; // 在创建 QTreeWidget 对象后设置自定义的 QItemDelegate QTreeWidget *tree new QTreeWidget(parent); tree-setItemDelegate(new MyDelegate(tree));这里定义了一个 MyDelegate 类来继承自 QItemDelegate重写了其 paint() 函数以实现节点样式的自定义。在创建 QTreeWidget 对象后使用 QTreeWidget::setItemDelegate() 函数设置自定义的 QItemDelegate。 三、注意事项 1、 QTreeWidget 中的数据存储在 QTreeWidgetItem 中因此在对 QTreeWidget 进行数据操作时必须同时对其对应的 QTreeWidgetItem 进行相应的操作。 2、 QTreeWidget 的节点数据的列数默认为 1可以使用 QTreeWidget::setColumnCount() 函数进行设置。 3、 QTreeWidgetItem 的列数必须与 QTreeWidget 的列数相同否则节点的数据将无法正确显示。 四、完整示例 #include QApplication #include QDebug #include QHeaderView #include QItemDelegate #include QPainter #include QTreeWidget #include QTreeWidgetItemclass MyDelegate : public QItemDelegate { public:MyDelegate(QObject *parent nullptr) : QItemDelegate(parent) {}void paint(QPainter *painter, const QStyleOptionViewItem option, const QModelIndex index) const override {QStyleOptionViewItem opt option;if (opt.state QStyle::State_Selected) {painter-fillRect(opt.rect, opt.palette.highlight());opt.palette.setColor(QPalette::Text, opt.palette.highlightedText().color());}painter-drawText(opt.rect, Qt::AlignVCenter | Qt::AlignLeft| Qt::TextWordWrap, index.data(Qt::DisplayRole).toString());} };int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建 QTreeWidget 对象QTreeWidget *tree new QTreeWidget;tree-setColumnCount(3); // 设置列数为 3tree-setHeaderLabels({Name, Value, Data}); // 设置列标签tree-header()-setSectionResizeMode(QHeaderView::ResizeToContents); // 自适应列宽// 创建根节点QTreeWidgetItem *root new QTreeWidgetItem(tree);root-setText(0, Root);root-setText(1, 0);root-setData(2, Qt::UserRole, root data);tree-addTopLevelItem(root);// 创建子节点 1QTreeWidgetItem *child1 new QTreeWidgetItem(root);child1-setText(0, Child 1);child1-setText(1, 10);root-addChild(child1);// 创建子节点 2QTreeWidgetItem *child2 new QTreeWidgetItem(root);child2-setText(0, Child 2);child2-setText(1, 20);tree-insertTopLevelItem(0, child2);// 设置自定义样式tree-setItemDelegate(new MyDelegate(tree));// 读取节点数据QTreeWidgetItem *item tree-topLevelItem(0);if (item) {qDebug() Root name: item-text(0); // 输出 RootqDebug() Root value: item-text(1); // 输出 0qDebug() Root data: item-data(2, Qt::UserRole).toString(); // 输出 root data }// 显示 QTreeWidget 对象 tree-show();return app.exec(); }运行上述示例程序可以看到一个简单的 QTreeWidget 对象其中包含三列数据根节点下有两个子节点。