QT上位机开发(树形控件在地图软件中的应用)
2024-01-10 06:05:03
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
? ? ? ? 树形控件还是非常有用的,比如在选择文件的时候、选择目录的时候、以及选择同类型数据中某一个特定选项的时候。当然,对于cad而言,一个图形上面可能有很多的数据,这些数据又被分成了很多类。这个时候,如果我们需要higlight一些数据的时候,一般就会去树形控件来查找和显示。今天正好借着这个机会,学习下树形控件。
1、创建一个基础的widget工程
? ? ? ? 首先,我们需要创建一个widget工程,为后期的修改所用。
2、利用designer工具添加一个QTreeView的控件
? ? ? ? 有了widget之后,我们剩下来只需要添加一个控件就好,即一个treeView的控件,
3、修改头文件
? ? ? ? 因为treeView使用的时候,还会涉及到变量QStandardItemModel,所以需要在头文件里面添加这样一个model。
#pragma once
#include <QApplication>
#include <QTreeView>
#include <QStandardItemModel>
#include <QStandardItem>
#include <QHeaderView>
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication.h"
class QtWidgetsApplication : public QMainWindow
{
Q_OBJECT
public:
QtWidgetsApplication(QWidget *parent = nullptr);
~QtWidgetsApplication();
private:
Ui::QtWidgetsApplicationClass ui;
QStandardItemModel model;
};
4、修改cpp文件
? ? ? ? 有了h文件之后,接下来就是cpp文件了。相关的修改也主要是在构造函数完成的。首先是隐藏行信息。接着添加Map节点和New node节点。后续的话,就是把各个子节点添加上即可。
#include "QtWidgetsApplication.h"
QtWidgetsApplication::QtWidgetsApplication(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
// hide line
ui.treeView->header()->setHidden(true);
ui.treeView->setModel(&model);
// add node
QStandardItem *mapItem = new QStandardItem("Map");
model.appendRow(mapItem);
QStandardItem *newItem = new QStandardItem("New node");
model.appendRow(newItem);
// add leaf
QStandardItem *pointItem = new QStandardItem("point");
mapItem->appendRow(pointItem);
QStandardItem *pointItem1 = new QStandardItem("point1");
pointItem->appendRow(pointItem1);
QStandardItem *pointItem2 = new QStandardItem("point2");
pointItem->appendRow(pointItem2);
QStandardItem *pointItem3 = new QStandardItem("point3");
pointItem->appendRow(pointItem3);
QStandardItem *lineItem = new QStandardItem("line");
mapItem->appendRow(lineItem);
QStandardItem *lineItem1 = new QStandardItem("line1");
lineItem->appendRow(lineItem1);
QStandardItem *lineItem2 = new QStandardItem("line2");
lineItem->appendRow(lineItem2);
QStandardItem *circle = new QStandardItem("circle");
mapItem->appendRow(circle);
QStandardItem *circleItem1 = new QStandardItem("circle1");
circle->appendRow(circleItem1);
QStandardItem *circleItem2 = new QStandardItem("circle2");
circle->appendRow(circleItem2);
QStandardItem *rectangle = new QStandardItem("rectangle");
mapItem->appendRow(rectangle);
QStandardItem *rectangleItem1 = new QStandardItem("rectangle1");
rectangle->appendRow(rectangleItem1);
QStandardItem *rectangleItem2 = new QStandardItem("rectangle2");
rectangle->appendRow(rectangleItem2);
QStandardItem *picture = new QStandardItem("picture");
mapItem->appendRow(picture);
QStandardItem *pictureItem1 = new QStandardItem("picture1");
picture->appendRow(pictureItem1);
QStandardItem *pictureItem2 = new QStandardItem("picture2");
picture->appendRow(pictureItem2);
}
QtWidgetsApplication::~QtWidgetsApplication()
{}
5、测试和验证
? ? ? ? 测试和验证就比较简单了,首先看看能不能编译通过。如果可以,接着看看有没有显示出各个节点,各个节点的子节点是不是也显示正常,没有问题的话,我们就可以在后面的项目中试着使用树形控件了。
文章来源:https://blog.csdn.net/feixiaoxing/article/details/135493010
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!