点云数据处理实现Qt界面常用功能

1、主窗口设置

ui.setupUi(this);
this->setWindowTitle("点云处理UI");
this->setGeometry(0, 0, 1200, 900);         //设置窗口大小
this->setFixedSize(1200, 900);              //设置窗口固定大小

2、pcl的QVTK控件

viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
viewer->setBackgroundColor(0, 0.3, 0.4);
ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());              //显示视窗放到ui界面
viewer->setupInteractor(ui.qvtkWidget->GetInteractor(), ui.qvtkWidget->GetRenderWindow());
ui.qvtkWidget->update();                                                //更新视窗显示

3、菜单栏及其选项

//3、创建菜单栏、下拉框
QMenuBar* menu_bar = new QMenuBar(this);            //创建一个菜单栏
this->setMenuBar(menu_bar);                         //设置为MainWindow的菜单栏
menu_bar->setStyleSheet("font-size : 18px");
//菜单栏-文件项
QMenu* file_menu = new QMenu("文件", menu_bar);   //菜单栏创建一个文件项
QAction* open_action = new QAction("读取");       //文件下拉框
file_menu->addAction(open_action);//添加动作到文件项,QAction就会自动变成子菜单
QAction* save_action = new QAction("保存");
file_menu->addAction(save_action);
file_menu->addSeparator();        //添加菜单分隔符
QAction* quit_action = new QAction("退出");
file_menu->addAction(quit_action);
menu_bar->addMenu(file_menu);       //最后把文件项添加到菜单栏

4、TreeView树形控件

学习来源:参考博文

Qt中使用model来管理数据与视图的关系。QT提供了一些现成的models用于处理数据项:

  • QStringListModel 用于存储简单的QString列表。
  • QStandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据。
  • QDirModel提供本地文件系统中的文件与目录信息。
  • QSqlQueryModel,QSqlTableModel,QSqlRelationTableModel用来访问数据库。
QStandardItemModel *model = new QStandardItemModel(this);
//设置表头隐藏
//ui->treeView->setHeaderHidden(true);
//设置model 
ui->treeView->setModel(model);
//设置展开
ui->treeView->expandAll();

//model分级效果
model->setItem(0,0,new QStandardItem("one"));
model->item(0,0)->setChild(0,0,new QStandardItem("二级1"));
model->item(0,0)->setChild(1,0,new QStandardItem("二级2"));
model->setItem(1,0,new QStandardItem("two"));
model->item(1,0)->setChild(0,0,new QStandardItem("二级1"));

//设置可选框
model->item(0,0)->setCheckable(true);
model->item(0,0)->setCheckState(Qt::Checked);
model->item(0,0)->child(0,0)->setCheckable(true);
model->item(0,0)->child(0,0)->setCheckState(Qt::Unchecked);
model->item(0,0)->child(1,0)->setCheckable(true);
model->item(0,0)->child(1,0)->setCheckState(Qt::Checked);

//添加节点
QStandardItem* itemFolder = new QStandardItem(QStringLiteral("cloud%1").arg(cloud_vec.size() - 1));//新建节点
itemFolder->setCheckable(true);         //打开复选框
itemFolder->setCheckState(Qt::Checked); //设置选中状态
model->appendRow(itemFolder);           //添加到model行

猜你喜欢

转载自blog.csdn.net/qq_41753052/article/details/126303704
今日推荐