在线功能合并
parent
86d0b5519f
commit
48d6c63740
|
@ -4,7 +4,7 @@
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include<QPlainTextEdit>
|
#include<QPlainTextEdit>
|
||||||
#include<QPushButton>
|
#include<QPushButton>
|
||||||
#include<QPushButton>
|
#include<QCheckBox>
|
||||||
|
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
|
@ -39,38 +39,14 @@
|
||||||
#include "rviz/selection/selection_manager.h"
|
#include "rviz/selection/selection_manager.h"
|
||||||
#include "rviz/panel.h"
|
#include "rviz/panel.h"
|
||||||
|
|
||||||
#include<QDebug>
|
|
||||||
#include<QKeyEvent>
|
|
||||||
#include <QMutex>
|
|
||||||
#include<QTimer>
|
|
||||||
#include<QObject>
|
|
||||||
#include <QMetaEnum>
|
|
||||||
#include <QRegExp>
|
|
||||||
#include <cmath>
|
|
||||||
#include<QMessageBox>
|
|
||||||
#include<QCoreApplication>
|
|
||||||
#include <QProgressBar>
|
|
||||||
|
|
||||||
#include <rosbag/bag.h>
|
|
||||||
#include <rosbag/view.h>
|
|
||||||
#include <rosbag/query.h>
|
|
||||||
#include<string>
|
|
||||||
#include<QFileDialog>
|
|
||||||
|
|
||||||
#include "rviz/properties/property_tree_widget.h"
|
|
||||||
#include "rviz/selection/selection_manager.h"
|
|
||||||
#include "rviz/panel.h"
|
|
||||||
|
|
||||||
#include "rviz/visualization_manager.h"
|
#include "rviz/visualization_manager.h"
|
||||||
#include"rviz/tool_manager.h"
|
#include"rviz/tool_manager.h"
|
||||||
#include"rviz/tool_manager.h"
|
|
||||||
#include "rviz/render_panel.h"
|
#include "rviz/render_panel.h"
|
||||||
#include "rviz/display.h"
|
#include "rviz/display.h"
|
||||||
|
|
||||||
#include "myviz.h"
|
#include "myviz.h"
|
||||||
#include "../tools/color.h"
|
#include "../tools/color.h"
|
||||||
#include "qthread.h"
|
#include "qthread.h"
|
||||||
#include "qthread.h"
|
|
||||||
// BEGIN_TUTORIAL
|
// BEGIN_TUTORIAL
|
||||||
// Constructor for MyViz. This does most of the work of the class.
|
// Constructor for MyViz. This does most of the work of the class.
|
||||||
MyViz::MyViz( QWidget* parent)
|
MyViz::MyViz( QWidget* parent)
|
||||||
|
@ -84,8 +60,9 @@ MyViz::MyViz( QWidget* parent)
|
||||||
|
|
||||||
// 全局变量存放处
|
// 全局变量存放处
|
||||||
// 颜色名称,可添加,待设置rgb类型设置颜色
|
// 颜色名称,可添加,待设置rgb类型设置颜色
|
||||||
color_name = {"white","red","green","black","blue","yellow","pink","purple","skyblue","lightgreen","orange",
|
color_name = {
|
||||||
color_name = {"white","red","green","black","blue","yellow","pink","purple","skyblue","lightgreen","orange",
|
"white","red","green","black","blue","yellow",
|
||||||
|
"pink","purple","skyblue","lightgreen","orange",
|
||||||
};
|
};
|
||||||
// 颜色路径名
|
// 颜色路径名
|
||||||
color_icon_filename = QString("../Rviz/librviz_ws/src/librviz_tutorial/sources/images/%1.png");
|
color_icon_filename = QString("../Rviz/librviz_ws/src/librviz_tutorial/sources/images/%1.png");
|
||||||
|
@ -117,19 +94,18 @@ MyViz::MyViz( QWidget* parent)
|
||||||
|
|
||||||
controls_layout->addWidget( login_button, ctl_index, 0);
|
controls_layout->addWidget( login_button, ctl_index, 0);
|
||||||
controls_layout->addWidget( quit_login_button, ctl_index++, 1);
|
controls_layout->addWidget( quit_login_button, ctl_index++, 1);
|
||||||
controls_layout->addWidget( move_camera_button, ctl_index, 0);
|
|
||||||
controls_layout->addWidget( selection_button, ctl_index++ ,1);
|
|
||||||
|
|
||||||
// offline 布局
|
// offline 布局
|
||||||
// QPushButton setting!////////////////////////////////////////////////////////////////////////////////////////////////
|
// QPushButton setting!////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
QPushButton* play = new QPushButton("play", this);
|
QPushButton* play = new QPushButton("播放", this);
|
||||||
QPushButton* pause = new QPushButton("pause", this);
|
QPushButton* pause = new QPushButton("暂停", this);
|
||||||
QPushButton* but_save = new QPushButton("save", this);// buttonn: save one frame
|
QPushButton* but_save = new QPushButton("保存一帧", this);// buttonn: save one frame
|
||||||
QPushButton* but_saveMul = new QPushButton("saveMul", this);// button: save multiple frames
|
QPushButton* but_saveMul = new QPushButton("保存多帧", this);// button: save multiple frames
|
||||||
QPushButton* but_file = new QPushButton("file", this);// button: select file
|
QPushButton* but_file = new QPushButton("打开文件", this);// button: select file
|
||||||
|
|
||||||
// QLabel setting!/////////////////////////////////////////////////////////////////////////////////////////////////////
|
// QLabel setting!/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
QLabel* label_speed = new QLabel("speed:");//speed combobox
|
QLabel* label_speed = new QLabel("播放速度:");//speed combobox
|
||||||
QLabel* label_split = new QLabel("");//speed combobox
|
QLabel* label_split = new QLabel("");//speed combobox
|
||||||
|
|
||||||
// QSlider setting!////////////////////////////////////////////////////////////////////////////////////////////////////
|
// QSlider setting!////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -144,11 +120,11 @@ MyViz::MyViz( QWidget* parent)
|
||||||
but_file->setEnabled(false);
|
but_file->setEnabled(false);
|
||||||
|
|
||||||
// setting button size!////////////////////////////////////////////////////////////////////////////////////////////////
|
// setting button size!////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
play->setFixedSize(100, 30);
|
play->setFixedSize(120, 30);
|
||||||
pause->setFixedSize(100, 30);
|
pause->setFixedSize(120, 30);
|
||||||
but_save->setFixedSize(100, 30);
|
but_save->setFixedSize(120, 30);
|
||||||
but_saveMul->setFixedSize(100, 30);
|
but_saveMul->setFixedSize(120, 30);
|
||||||
but_file->setFixedSize(100, 30);
|
but_file->setFixedSize(120, 30);
|
||||||
|
|
||||||
for(int i = 0; i < speed_name.size(); i++)
|
for(int i = 0; i < speed_name.size(); i++)
|
||||||
speed_combobox->addItem(speed_name[i] + "x");
|
speed_combobox->addItem(speed_name[i] + "x");
|
||||||
|
@ -159,6 +135,9 @@ MyViz::MyViz( QWidget* parent)
|
||||||
controls_layout->addWidget( but_save, ctl_index++, 1 );
|
controls_layout->addWidget( but_save, ctl_index++, 1 );
|
||||||
controls_layout->addWidget( but_saveMul, ctl_index++, 0 );
|
controls_layout->addWidget( but_saveMul, ctl_index++, 0 );
|
||||||
|
|
||||||
|
controls_layout->addWidget( move_camera_button, ctl_index, 0);
|
||||||
|
controls_layout->addWidget( selection_button, ctl_index++ ,1);
|
||||||
|
|
||||||
controls_layout->addWidget(label_speed,ctl_index,0);
|
controls_layout->addWidget(label_speed,ctl_index,0);
|
||||||
controls_layout->addWidget(speed_combobox,ctl_index++,1);
|
controls_layout->addWidget(speed_combobox,ctl_index++,1);
|
||||||
|
|
||||||
|
@ -169,26 +148,29 @@ MyViz::MyViz( QWidget* parent)
|
||||||
controls_layout->setSpacing(5);
|
controls_layout->setSpacing(5);
|
||||||
|
|
||||||
// 是否选择显示坐标轴
|
// 是否选择显示坐标轴
|
||||||
QLabel* label_axes = new QLabel("Display Axes:");
|
QLabel* label_axes = new QLabel("参考坐标系:");
|
||||||
QComboBox * axesBox = new QComboBox();
|
QCheckBox *axes_checkbox = new QCheckBox("", this);
|
||||||
axesBox->addItem("no");
|
// QComboBox * axesBox = new QComboBox();
|
||||||
axesBox->addItem("yes");
|
// axesBox->addItem("不显示");
|
||||||
|
// axesBox->addItem("显示");
|
||||||
|
|
||||||
// 选择圆圈范围
|
// 选择圆圈范围
|
||||||
QLabel* label_circle = new QLabel("Circle Scale(m): ");
|
QLabel* label_circle = new QLabel("参考圆(m): ");
|
||||||
QSpinBox* circel_r_text=new QSpinBox();
|
QLineEdit* circleLineEdit = new QLineEdit();
|
||||||
|
circleLineEdit->setPlaceholderText("请输入数字");
|
||||||
|
circleLineEdit->setFixedWidth(120);
|
||||||
|
|
||||||
controls_layout->addWidget(label_axes, ctl_index,0);
|
controls_layout->addWidget(label_axes, ctl_index,0);
|
||||||
controls_layout->addWidget(axesBox, ctl_index++,1);
|
controls_layout->addWidget(axes_checkbox, ctl_index++,1);
|
||||||
controls_layout->addWidget(label_circle, ctl_index,0);
|
controls_layout->addWidget(label_circle, ctl_index,0);
|
||||||
controls_layout->addWidget(circel_r_text, ctl_index++,1);
|
controls_layout->addWidget(circleLineEdit, ctl_index++,1);
|
||||||
|
|
||||||
// 第二个layout
|
// 第二个layout
|
||||||
QGridLayout* display_layout = new QGridLayout();
|
//QGridLayout* display_layout = new QGridLayout();
|
||||||
int display_index = 0;
|
//int display_index = 0;
|
||||||
|
|
||||||
// Tree 全局变量存放地方
|
// Tree 全局变量存放地方
|
||||||
Tree_Display(display_layout, display_index++);
|
Tree_Display(controls_layout, ctl_index++);
|
||||||
|
|
||||||
|
|
||||||
// 待解锁子组件设置父组件,方便寻找,登陆后解锁可编辑属性
|
// 待解锁子组件设置父组件,方便寻找,登陆后解锁可编辑属性
|
||||||
|
@ -196,6 +178,8 @@ MyViz::MyViz( QWidget* parent)
|
||||||
login_button->setParent(this);
|
login_button->setParent(this);
|
||||||
quit_login_button->setObjectName("quit_login_button");
|
quit_login_button->setObjectName("quit_login_button");
|
||||||
quit_login_button->setParent(this);
|
quit_login_button->setParent(this);
|
||||||
|
quit_login_button->setEnabled(false);
|
||||||
|
|
||||||
|
|
||||||
but_file->setObjectName("open_file");
|
but_file->setObjectName("open_file");
|
||||||
but_file->setParent(this);
|
but_file->setParent(this);
|
||||||
|
@ -216,9 +200,10 @@ MyViz::MyViz( QWidget* parent)
|
||||||
connect(move_camera_button, SIGNAL(clicked()), this, SLOT( slot_move_camera()));
|
connect(move_camera_button, SIGNAL(clicked()), this, SLOT( slot_move_camera()));
|
||||||
|
|
||||||
// 增加坐标变换
|
// 增加坐标变换
|
||||||
connect(axesBox, SIGNAL(currentIndexChanged(int)), this, SLOT(AxesDisplayChanged(int)));
|
// connect(axesBox, SIGNAL(currentIndexChanged(int)), this, SLOT(AxesDisplayChanged(int)));
|
||||||
|
connect(axes_checkbox, SIGNAL(stateChanged(int)), this, SLOT(AxesDisplayChanged(int)));
|
||||||
// 增加圆圈变换
|
// 增加圆圈变换
|
||||||
connect(circel_r_text,SIGNAL(valueChanged(int)),this,SLOT(CircleDisplayChanged(int)));
|
connect(circleLineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(CircleDisplayChanged(const QString&)));
|
||||||
//off
|
//off
|
||||||
connect(progress,&QSlider::valueChanged,this,[=](){// 变动会触发
|
connect(progress,&QSlider::valueChanged,this,[=](){// 变动会触发
|
||||||
if(!ismoved){
|
if(!ismoved){
|
||||||
|
@ -325,10 +310,6 @@ MyViz::MyViz( QWidget* parent)
|
||||||
render_panel_ = new rviz::RenderPanel(); // RVIZ在QT上显示的类
|
render_panel_ = new rviz::RenderPanel(); // RVIZ在QT上显示的类
|
||||||
QHBoxLayout* main_layout = new QHBoxLayout; // 主要layout QV垂直,QH水平
|
QHBoxLayout* main_layout = new QHBoxLayout; // 主要layout QV垂直,QH水平
|
||||||
|
|
||||||
// QSplitter *splitter = new QSplitter();
|
|
||||||
// main_layout->addWidget(splitter);
|
|
||||||
// splitter->addWidget(render_panel_);
|
|
||||||
|
|
||||||
// Next we initialize the main RViz classes.
|
// Next we initialize the main RViz classes.
|
||||||
//
|
//
|
||||||
// The VisualizationManager is the container for Display objects,
|
// The VisualizationManager is the container for Display objects,
|
||||||
|
@ -350,12 +331,13 @@ MyViz::MyViz( QWidget* parent)
|
||||||
// qDebug()<< cur_fixed_frame;
|
// qDebug()<< cur_fixed_frame;
|
||||||
|
|
||||||
// 创建select panel
|
// 创建select panel
|
||||||
QLabel *select_label = new QLabel("Select Display:");
|
QLabel *select_label = new QLabel("坐标点显示:");
|
||||||
tree_widget_ = new rviz::PropertyTreeWidget();
|
tree_widget_ = new rviz::PropertyTreeWidget();
|
||||||
tree_widget_->setModel(manager_->getSelectionManager()->getPropertyModel());
|
tree_widget_->setModel(manager_->getSelectionManager()->getPropertyModel());
|
||||||
|
ctl_index++;
|
||||||
display_layout->addWidget(select_label, display_index++, 0);
|
controls_layout->addWidget(select_label, ctl_index++, 0);
|
||||||
display_layout->addWidget(tree_widget_, display_index++, 0);
|
// controls_layout->addWidget(tree_widget_, ctl_index++, 0);
|
||||||
|
controls_layout->addWidget(tree_widget_, ctl_index++, 0, 1, 2);
|
||||||
|
|
||||||
// 设置网格某一行伸缩比例,放最后一行
|
// 设置网格某一行伸缩比例,放最后一行
|
||||||
// controls_layout->setRowStretch(--ctl_index, 6);
|
// controls_layout->setRowStretch(--ctl_index, 6);
|
||||||
|
@ -367,8 +349,6 @@ MyViz::MyViz( QWidget* parent)
|
||||||
// cloud = manager_->createDisplay( "rviz/PointCloud2", "point cloud", true );
|
// cloud = manager_->createDisplay( "rviz/PointCloud2", "point cloud", true );
|
||||||
// ROS_ASSERT( cloud != NULL );
|
// ROS_ASSERT( cloud != NULL );
|
||||||
|
|
||||||
laser_ = manager_->createDisplay( "rviz/LaserScan", "Qlaser", true );
|
|
||||||
ROS_ASSERT( laser_ );
|
|
||||||
laser_ = manager_->createDisplay( "rviz/LaserScan", "Qlaser", true );
|
laser_ = manager_->createDisplay( "rviz/LaserScan", "Qlaser", true );
|
||||||
ROS_ASSERT( laser_ );
|
ROS_ASSERT( laser_ );
|
||||||
// 新增雷达
|
// 新增雷达
|
||||||
|
@ -398,7 +378,7 @@ MyViz::MyViz( QWidget* parent)
|
||||||
|
|
||||||
// Set the top-level layout for this MyViz widget.
|
// Set the top-level layout for this MyViz widget.
|
||||||
main_layout->addLayout( controls_layout );
|
main_layout->addLayout( controls_layout );
|
||||||
main_layout->addLayout( display_layout );
|
//main_layout->addLayout( controls_layout );
|
||||||
main_layout->addWidget( render_panel_,2); // 存放rviz的位置, stretch 拉伸系数
|
main_layout->addWidget( render_panel_,2); // 存放rviz的位置, stretch 拉伸系数
|
||||||
setLayout( main_layout );
|
setLayout( main_layout );
|
||||||
|
|
||||||
|
@ -422,10 +402,10 @@ void MyViz::Tree_Display(QGridLayout* controls_layout, int index){
|
||||||
global->setExpanded(true);
|
global->setExpanded(true);
|
||||||
|
|
||||||
// fix frame
|
// fix frame
|
||||||
QTreeWidgetItem *fixed_frame = new QTreeWidgetItem(global, QStringList("Fixed Frame"));
|
QTreeWidgetItem *fixed_frame = new QTreeWidgetItem(global, QStringList("固定参考系"));
|
||||||
|
|
||||||
QLineEdit* fixed_frame_text = new QLineEdit();
|
QLineEdit* fixed_frame_text = new QLineEdit();
|
||||||
fixed_frame_text->setText("laser");
|
fixed_frame_text->setText("world");
|
||||||
fixed_frame_text->setStyleSheet("background:transparent;border-width:0;border-style:inset");
|
fixed_frame_text->setStyleSheet("background:transparent;border-width:0;border-style:inset");
|
||||||
// 初始化固定坐标系
|
// 初始化固定坐标系
|
||||||
cur_fixed_frame = fixed_frame_text->text();
|
cur_fixed_frame = fixed_frame_text->text();
|
||||||
|
@ -434,7 +414,7 @@ void MyViz::Tree_Display(QGridLayout* controls_layout, int index){
|
||||||
// 将其他控件(非TreeWidgetItem)放入treeItem中
|
// 将其他控件(非TreeWidgetItem)放入treeItem中
|
||||||
menu->setItemWidget(fixed_frame, 1, fixed_frame_text); // 将container 放到 Item ,数字为列数
|
menu->setItemWidget(fixed_frame, 1, fixed_frame_text); // 将container 放到 Item ,数字为列数
|
||||||
|
|
||||||
QTreeWidgetItem *bg_color = new QTreeWidgetItem(global, QStringList("BackGround Color"));
|
QTreeWidgetItem *bg_color = new QTreeWidgetItem(global, QStringList("背景颜色"));
|
||||||
QLineEdit* bg_color_text = new QLineEdit();
|
QLineEdit* bg_color_text = new QLineEdit();
|
||||||
bg_color_text->setText("48;48;48");
|
bg_color_text->setText("48;48;48");
|
||||||
bg_color_text->setStyleSheet("border-width:0;border-style:outset");
|
bg_color_text->setStyleSheet("border-width:0;border-style:outset");
|
||||||
|
@ -444,23 +424,20 @@ void MyViz::Tree_Display(QGridLayout* controls_layout, int index){
|
||||||
// global->addChild(fixed_frame);
|
// global->addChild(fixed_frame);
|
||||||
// global->setTextAlignment(1, 2); // (列数,对齐方式)
|
// global->setTextAlignment(1, 2); // (列数,对齐方式)
|
||||||
// grid - 一层树
|
// grid - 一层树
|
||||||
QTreeWidgetItem * grid = new QTreeWidgetItem(menu, QStringList("Grid"));
|
QTreeWidgetItem * grid = new QTreeWidgetItem(menu, QStringList("栅格"));
|
||||||
// 二层
|
// 二层
|
||||||
QTreeWidgetItem *grid_color = new QTreeWidgetItem(grid, QStringList("Color"));
|
QTreeWidgetItem *grid_color = new QTreeWidgetItem(grid, QStringList("颜色"));
|
||||||
QComboBox * grid_color_cbox = new QComboBox();
|
QComboBox * grid_color_cbox = new QComboBox();
|
||||||
for(int i =0 ; i < color_name.size(); ++i){
|
for(int i =0 ; i < color_name.size(); ++i){
|
||||||
QString color_path = color_icon_filename.arg(color_name[i]);
|
QString color_path = color_icon_filename.arg(color_name[i]);
|
||||||
QIcon color_icon(color_path);
|
QIcon color_icon(color_path);
|
||||||
grid_color_cbox->addItem(color_icon, color_name[i]);
|
grid_color_cbox->addItem(color_icon, color_name[i]);
|
||||||
QString color_path = color_icon_filename.arg(color_name[i]);
|
|
||||||
QIcon color_icon(color_path);
|
|
||||||
grid_color_cbox->addItem(color_icon, color_name[i]);
|
|
||||||
}
|
}
|
||||||
connect(grid_color_cbox, SIGNAL(currentIndexChanged(int)), this, SLOT(GridColorChanged(int)));
|
connect(grid_color_cbox, SIGNAL(currentIndexChanged(int)), this, SLOT(GridColorChanged(int)));
|
||||||
menu->setItemWidget(grid_color, 1, grid_color_cbox);
|
menu->setItemWidget(grid_color, 1, grid_color_cbox);
|
||||||
|
|
||||||
// grid cell size
|
// grid cell size
|
||||||
QTreeWidgetItem *grid_cell = new QTreeWidgetItem(grid, QStringList("Cell Size"));
|
QTreeWidgetItem *grid_cell = new QTreeWidgetItem(grid, QStringList("网格大小"));
|
||||||
QSlider* cell_size_slider = new QSlider( Qt::Horizontal );
|
QSlider* cell_size_slider = new QSlider( Qt::Horizontal );
|
||||||
cell_size_slider->setMinimum( 1 );
|
cell_size_slider->setMinimum( 1 );
|
||||||
cell_size_slider->setMaximum( 100 );
|
cell_size_slider->setMaximum( 100 );
|
||||||
|
@ -469,7 +446,7 @@ void MyViz::Tree_Display(QGridLayout* controls_layout, int index){
|
||||||
menu->setItemWidget(grid_cell, 1, cell_size_slider);
|
menu->setItemWidget(grid_cell, 1, cell_size_slider);
|
||||||
|
|
||||||
// grid Line Thickness
|
// grid Line Thickness
|
||||||
QTreeWidgetItem *grid_thickness = new QTreeWidgetItem(grid, QStringList("Line Thickness"));
|
QTreeWidgetItem *grid_thickness = new QTreeWidgetItem(grid, QStringList("线条粗细"));
|
||||||
QSlider* thickness_slider = new QSlider( Qt::Horizontal );
|
QSlider* thickness_slider = new QSlider( Qt::Horizontal );
|
||||||
thickness_slider->setMinimum( 1 );
|
thickness_slider->setMinimum( 1 );
|
||||||
thickness_slider->setMaximum( 100 );
|
thickness_slider->setMaximum( 100 );
|
||||||
|
@ -478,9 +455,9 @@ void MyViz::Tree_Display(QGridLayout* controls_layout, int index){
|
||||||
menu->setItemWidget(grid_thickness, 1, thickness_slider);
|
menu->setItemWidget(grid_thickness, 1, thickness_slider);
|
||||||
|
|
||||||
// laser - 一层树
|
// laser - 一层树
|
||||||
QTreeWidgetItem * laser = new QTreeWidgetItem(menu, QStringList("Laser"));
|
QTreeWidgetItem * laser = new QTreeWidgetItem(menu, QStringList("雷达"));
|
||||||
// 二层
|
// 二层
|
||||||
QTreeWidgetItem *laser_topic = new QTreeWidgetItem(laser, QStringList("Topic "));
|
QTreeWidgetItem *laser_topic = new QTreeWidgetItem(laser, QStringList("话题"));
|
||||||
// Topic_Laser 输入雷达
|
// Topic_Laser 输入雷达
|
||||||
QLineEdit* laser_topic_text = new QLineEdit();
|
QLineEdit* laser_topic_text = new QLineEdit();
|
||||||
|
|
||||||
|
@ -493,13 +470,13 @@ void MyViz::Tree_Display(QGridLayout* controls_layout, int index){
|
||||||
menu->setItemWidget(laser_topic, 1, laser_topic_text);
|
menu->setItemWidget(laser_topic, 1, laser_topic_text);
|
||||||
|
|
||||||
// Laser size
|
// Laser size
|
||||||
QTreeWidgetItem *laser_size = new QTreeWidgetItem(laser, QStringList("Size "));
|
QTreeWidgetItem *laser_size = new QTreeWidgetItem(laser, QStringList("大小"));
|
||||||
QSpinBox* laser_size_text=new QSpinBox();
|
QSpinBox* laser_size_text=new QSpinBox();
|
||||||
connect(laser_size_text,SIGNAL(valueChanged(int)),this,SLOT(setLaserSize(int)));
|
connect(laser_size_text,SIGNAL(valueChanged(int)),this,SLOT(setLaserSize(int)));
|
||||||
menu->setItemWidget(laser_size, 1, laser_size_text);
|
menu->setItemWidget(laser_size, 1, laser_size_text);
|
||||||
|
|
||||||
// Laser color
|
// Laser color
|
||||||
QTreeWidgetItem *laser_color = new QTreeWidgetItem(laser, QStringList("Color "));
|
QTreeWidgetItem *laser_color = new QTreeWidgetItem(laser, QStringList("颜色"));
|
||||||
QComboBox * laser_color_comboBox = new QComboBox();
|
QComboBox * laser_color_comboBox = new QComboBox();
|
||||||
for(int i =0 ; i < color_name.size(); ++i){
|
for(int i =0 ; i < color_name.size(); ++i){
|
||||||
QString color_path = color_icon_filename.arg(color_name[i]);
|
QString color_path = color_icon_filename.arg(color_name[i]);
|
||||||
|
@ -513,55 +490,70 @@ void MyViz::Tree_Display(QGridLayout* controls_layout, int index){
|
||||||
connect(laser_color_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(LaserColorChanged(int)));
|
connect(laser_color_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(LaserColorChanged(int)));
|
||||||
menu->setItemWidget(laser_color, 1, laser_color_comboBox);
|
menu->setItemWidget(laser_color, 1, laser_color_comboBox);
|
||||||
|
|
||||||
controls_layout->addWidget(menu, index, 0 );
|
//controls_layout->addWidget(menu, index, 0 );
|
||||||
|
controls_layout->addWidget(menu, index, 0, 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MyViz::quit_login_button_clicked(){
|
void MyViz::quit_login_button_clicked(){
|
||||||
|
landed = 0;
|
||||||
|
// 退出设置登录按钮可用
|
||||||
QWidget * login_button = this->findChild<QWidget*>("login_button");
|
QWidget * login_button = this->findChild<QWidget*>("login_button");
|
||||||
if (login_button) {
|
if (login_button) {
|
||||||
// 找到了指定的子组件 在这里可以对子组件进行操作
|
|
||||||
login_button->setEnabled(true);
|
login_button->setEnabled(true);
|
||||||
landed = 0;
|
|
||||||
}else{
|
}else{
|
||||||
qDebug() << "login_button组件未找到" ;
|
qDebug() << "login_button组件未找到" ;
|
||||||
}
|
}
|
||||||
|
// 退出设置退出按钮不可用
|
||||||
|
QWidget * quit_button = this->findChild<QWidget*>("quit_login_button");
|
||||||
|
if (quit_button) {
|
||||||
|
quit_button->setEnabled(false);
|
||||||
|
}else{
|
||||||
|
qDebug() << "quit_login_button组件未找到" ;
|
||||||
|
}
|
||||||
|
// 退出设置其他组件不可用
|
||||||
if(dlg != NULL){
|
if(dlg != NULL){
|
||||||
for (int i=0; i< dlg->setting_name.size(); i++){
|
for (int i=0; i< dlg->setting_name.size(); i++){
|
||||||
QWidget *foundChild = this->findChild<QWidget*>(dlg->setting_name[i]);
|
QWidget *foundChild = this->findChild<QWidget*>(dlg->setting_name[i]);
|
||||||
if (foundChild) {
|
if (foundChild) {
|
||||||
// 找到了指定的子组件 在这里可以对子组件进行操作
|
// 找到了指定的子组件 在这里可以对子组件进行操作
|
||||||
foundChild->setEnabled(false);
|
foundChild->setEnabled(false);
|
||||||
}else{
|
}else{
|
||||||
qDebug()<<"第" << i+1 <<"组件未找到" ;
|
qDebug()<<"第" << i+1 <<"组件未找到" ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyViz::login_button_clicked(){
|
void MyViz::login_button_clicked(){
|
||||||
dlg->setWindowTitle(tr("登录"));
|
dlg->setWindowTitle(tr("登录"));
|
||||||
// dlg->setFixedSize(400, 300);
|
// dlg->setFixedSize(400, 300);
|
||||||
// dlg->open();// 非模态级别对话框
|
// dlg->open();// 非模态级别对话框
|
||||||
if(dlg->exec() == QDialog::Accepted){
|
if(dlg->exec() == QDialog::Accepted){
|
||||||
// 登录成功后
|
// 登录成功后
|
||||||
qDebug() << "login accepted";
|
landed = 1;
|
||||||
QWidget * login_button = this->findChild<QWidget*>("login_button");
|
qDebug() << "login accepted";
|
||||||
if (login_button) {
|
// 登录设置其他组件和退出可用
|
||||||
// 找到了指定的子组件 在这里可以对子组件进行操作
|
QWidget * quit_button = this->findChild<QWidget*>("quit_login_button");
|
||||||
login_button->setEnabled(false);
|
if (quit_button) {
|
||||||
landed = 1;
|
quit_button->setEnabled(true);
|
||||||
}else{
|
|
||||||
qDebug()<<"login_button组件未找到" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
// 登录失败
|
qDebug() << "quit_login_button组件未找到" ;
|
||||||
qDebug() << "login refused";
|
|
||||||
}
|
}
|
||||||
|
// 登录设置登录不可用
|
||||||
|
QWidget * login_button = this->findChild<QWidget*>("login_button");
|
||||||
|
if (login_button) {
|
||||||
|
login_button->setEnabled(false);
|
||||||
|
}else{
|
||||||
|
qDebug()<<"login_button组件未找到" ;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
// 登录失败
|
||||||
|
qDebug() << "login refused";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyViz::PlayCircle(int index){
|
void MyViz::PlayCircle(double index){
|
||||||
int argc =0;
|
int argc =0;
|
||||||
char** argv;
|
char** argv;
|
||||||
ros::init(argc, argv, "basic_shapes");
|
ros::init(argc, argv, "basic_shapes");
|
||||||
|
@ -645,27 +637,29 @@ void MyViz::PlayCircle(int index){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyViz::CircleDisplayChanged(int r){
|
void MyViz::CircleDisplayChanged(const QString& text){
|
||||||
if(r == 0){
|
double index = text.toDouble();
|
||||||
|
if(index <= 0){
|
||||||
marker_->setValue(false);
|
marker_->setValue(false);
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
marker_->setValue(true);
|
marker_->setValue(true);
|
||||||
std::thread ThreadCircle(&MyViz::PlayCircle, this, r);// 新开线程执行操作
|
std::thread ThreadCircle(&MyViz::PlayCircle, this, index);// 新开线程执行操作
|
||||||
ThreadCircle.detach();// 执行完成后自动回收资源
|
ThreadCircle.detach();// 执行完成后自动回收资源
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyViz::AxesDisplayChanged(int index)
|
void MyViz::AxesDisplayChanged(int stage)
|
||||||
{
|
{
|
||||||
switch (index)
|
// 0未被选中,1被部分选中,2 被选中
|
||||||
|
switch (stage)
|
||||||
{
|
{
|
||||||
case 0: // "yes" 选项被选择
|
case 0: // 未被选中
|
||||||
if (axes_display != NULL)
|
if (axes_display != NULL)
|
||||||
axes_display->setValue(false);
|
axes_display->setValue(false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: // "no" 选项被选择
|
case 2: // 被选择
|
||||||
if (axes_display != NULL)
|
if (axes_display != NULL)
|
||||||
axes_display->setValue(true);
|
axes_display->setValue(true);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -70,9 +70,7 @@ public:
|
||||||
virtual ~MyViz();
|
virtual ~MyViz();
|
||||||
void subCallback(const std_msgs::String& msg);
|
void subCallback(const std_msgs::String& msg);
|
||||||
void pubThread();
|
void pubThread();
|
||||||
void PlayCircle(int index); // 圆圈线程执行函数
|
void PlayCircle(double index); // 圆圈线程执行函数
|
||||||
rosbag::View *view;
|
|
||||||
void PlayCircle(int index); // 圆圈线程执行函数
|
|
||||||
rosbag::View *view;
|
rosbag::View *view;
|
||||||
private Q_SLOTS: // QT信号和槽
|
private Q_SLOTS: // QT信号和槽
|
||||||
void setThickness( int thickness_percent );
|
void setThickness( int thickness_percent );
|
||||||
|
@ -87,9 +85,7 @@ private Q_SLOTS: // QT信号和槽
|
||||||
void setFixedFrame(const QString &FixedFrame);
|
void setFixedFrame(const QString &FixedFrame);
|
||||||
void setBackgroundColor(const QString& bg_color); // 背景颜色
|
void setBackgroundColor(const QString& bg_color); // 背景颜色
|
||||||
void AxesDisplayChanged(int index); // axe
|
void AxesDisplayChanged(int index); // axe
|
||||||
void CircleDisplayChanged(int index); // circle
|
void CircleDisplayChanged(const QString& text); // 圆圈变化
|
||||||
void AxesDisplayChanged(int index); // axe
|
|
||||||
void CircleDisplayChanged(int index); // circle
|
|
||||||
void Tree_Display(QGridLayout* layout, int index);
|
void Tree_Display(QGridLayout* layout, int index);
|
||||||
|
|
||||||
void login_button_clicked();
|
void login_button_clicked();
|
||||||
|
@ -106,17 +102,12 @@ private:
|
||||||
rviz::VisualizationManager* manager_; //
|
rviz::VisualizationManager* manager_; //
|
||||||
rviz::RenderPanel* render_panel_;
|
rviz::RenderPanel* render_panel_;
|
||||||
rviz::ToolManager* tool_manager_;
|
rviz::ToolManager* tool_manager_;
|
||||||
rviz::ToolManager* tool_manager_;
|
|
||||||
rviz::Display* grid_;
|
rviz::Display* grid_;
|
||||||
rviz::Display* cloud;
|
rviz::Display* cloud;
|
||||||
rviz::Display* laser_;
|
rviz::Display* laser_;
|
||||||
rviz::Display* axes_display;
|
rviz::Display* axes_display;
|
||||||
rviz::Display* marker_;
|
rviz::Display* marker_;
|
||||||
rviz::PropertyTreeWidget* tree_widget_ ;
|
rviz::PropertyTreeWidget* tree_widget_ ;
|
||||||
rviz::Display* laser_;
|
|
||||||
rviz::Display* axes_display;
|
|
||||||
rviz::Display* marker_;
|
|
||||||
rviz::PropertyTreeWidget* tree_widget_ ;
|
|
||||||
ros::NodeHandle nh;
|
ros::NodeHandle nh;
|
||||||
ros::Subscriber sub;
|
ros::Subscriber sub;
|
||||||
ros::Publisher pub;
|
ros::Publisher pub;
|
||||||
|
|
Loading…
Reference in New Issue