Apollo 11.0
自动驾驶开放平台
MainWindow类 参考

#include <main_window.h>

类 MainWindow 继承关系图:
MainWindow 的协作图:

类

struct  RadarData
 
struct  VideoImgProxy
 

Public 成员函数

 MainWindow (QWidget *parent=nullptr)
 
 ~MainWindow ()
 
void TopologyChanged (const apollo::cyber::proto::ChangeMsg &change_msg)
 
void AddNewWriter (const apollo::cyber::proto::RoleAttributes &role)
 

Protected 成员函数

void resizeEvent (QResizeEvent *) override
 

详细描述

在文件 main_window.h 第 47 行定义.

构造及析构函数说明

◆ MainWindow()

MainWindow::MainWindow ( QWidget *  parent = nullptr)
explicit

在文件 main_window.cc 第 167 行定义.

168 : QMainWindow(parent),
169 ui_(new Ui::MainWindow),
170 msg_dialog_(new MessageDialog),
171 open_images_dialog_(nullptr),
172
173 grid_(nullptr),
174 enable_grid_checkBox_(nullptr),
175 grid_root_item_(nullptr),
176
177 pointcloud_top_item_(nullptr),
178 pointcloud_comboBox_(new QComboBox),
179 pointcloud_button_(new QPushButton),
180 pointcloud_channel_Reader_(nullptr),
181
182 pointcloud_reader_mutex_(),
183
184 pointcloud_shader_(nullptr),
185 grid_shader_(nullptr),
186 radar_points_shader_(nullptr),
187 video_image_viewer_list_(),
188 closed_video_image_viewer_list_(),
189 radarData_list_(),
190 closed_radarData_list_(),
191 _channelName2TypeMap() {
192 ui_->setupUi(this);
193 ui_->videoImageGridLayout->setContentsMargins(2, 2, 2, 2);
194 ui_->videoImageWidget->setVisible(false);
195
196 ui_->mainToolBar->addAction(ui_->actionAddGrid);
197 ui_->mainToolBar->addAction(ui_->actionPointCloud);
198 ui_->mainToolBar->addSeparator();
199 ui_->mainToolBar->addAction(ui_->actionOpenImage);
200 ui_->mainToolBar->addAction(ui_->actionOpenImages);
201 ui_->mainToolBar->addAction(ui_->actionDelImage);
202 ui_->mainToolBar->addSeparator();
203 ui_->mainToolBar->addAction(ui_->actionPlay);
204 ui_->mainToolBar->addAction(ui_->actionPause);
205
206 pointcloud_reader_mutex_.lock();
207
208 {
209 QStringList tmp;
210 tmp << "ChannelNames"
211 << " ";
212 all_channel_root_ = new QTreeWidgetItem(tmp);
213 ui_->treeWidget->addTopLevelItem(all_channel_root_);
214 }
215
216 connect(ui_->actionAbout, SIGNAL(triggered(bool)), this, SLOT(showMessage()));
217 connect(ui_->actionLicense, SIGNAL(triggered(bool)), this,
218 SLOT(showMessage()));
219
220 pointcloud_button_->setCheckable(true);
221 pointcloud_button_->setStyleSheet(globalTreeItemStyle);
222 pointcloud_comboBox_->setStyleSheet(globalTreeItemStyle);
223
224 connect(pointcloud_button_, SIGNAL(clicked(bool)), this,
225 SLOT(PlayRenderableObject(bool)));
226 connect(pointcloud_comboBox_, SIGNAL(currentIndexChanged(int)), this,
227 SLOT(ChangePointCloudChannel()));
228
229 connect(ui_->treeWidget, SIGNAL(itemSelectionChanged()), this,
230 SLOT(UpdateActions()));
231 connect(ui_->treeWidget, SIGNAL(visibilityChanged(bool)), ui_->actionGlobal,
232 SLOT(setChecked(bool)));
233 connect(ui_->actionPlay, SIGNAL(triggered(bool)), this, SLOT(PlayPause()));
234 connect(ui_->actionPause, SIGNAL(triggered(bool)), this, SLOT(PlayPause()));
235}

◆ ~MainWindow()

MainWindow::~MainWindow ( )

在文件 main_window.cc 第 237 行定义.

237 {
238 for (VideoImgProxy* item : video_image_viewer_list_) {
239 item->reader_mutex_.unlock();
240 }
241 for (VideoImgProxy* item : closed_video_image_viewer_list_) {
242 item->reader_mutex_.unlock();
243 }
244 for (RadarData* item : radarData_list_) {
245 item->reader_mutex_.unlock();
246 }
247 for (RadarData* item : closed_radarData_list_) {
248 item->reader_mutex_.unlock();
249 }
250
251 pointcloud_reader_mutex_.unlock();
252
253 if (pointcloud_channel_Reader_) {
254 delete pointcloud_channel_Reader_;
255 pointcloud_channel_Reader_ = nullptr;
256 }
257
258 for (VideoImgProxy* item : video_image_viewer_list_) {
259 delete item;
260 }
261
262 for (VideoImgProxy* item : closed_video_image_viewer_list_) {
263 delete item;
264 }
265
266 for (RadarData* item : radarData_list_) {
267 delete item;
268 }
269
270 for (RadarData* item : closed_radarData_list_) {
271 delete item;
272 }
273
274 delete ui_;
275 delete msg_dialog_;
276}

成员函数说明

◆ AddNewWriter()

void MainWindow::AddNewWriter ( const apollo::cyber::proto::RoleAttributes &  role)

在文件 main_window.cc 第 1136 行定义.

1137 {
1138 const std::string& channelName = role.channel_name();
1139 if (_channelName2TypeMap.find(channelName) != _channelName2TypeMap.end()) {
1140 return;
1141 }
1142 const std::string& msgTypeName = role.message_type();
1143 _channelName2TypeMap[channelName] = msgTypeName;
1144
1145 QTreeWidgetItem* child = new QTreeWidgetItem();
1146 if (child == nullptr) {
1147 QMessageBox::warning(this, tr("Error"), tr("No Enough for New Channel!!!"),
1148 QMessageBox::Ok);
1149 return;
1150 }
1151
1152 QString str(channelName.c_str());
1153 child->setText(0, str);
1154 child->setToolTip(0, str);
1155
1156 bool b = true;
1157 for (int i = 0; i < all_channel_root_->childCount(); ++i) {
1158 if (str < all_channel_root_->child(i)->text(0)) {
1159 all_channel_root_->insertChild(i, child);
1160 b = false;
1161 }
1162 }
1163
1164 if (b) {
1165 all_channel_root_->addChild(child);
1166 }
1167 ui_->treeWidget->setRootIsDecorated(true);
1168
1169 QString msgType(msgTypeName.c_str());
1170 if (msgType.contains("camera", Qt::CaseInsensitive)) {
1171 for (VideoImgProxy* item : video_image_viewer_list_) {
1172 item->channel_name_combobox_.addItem(str);
1173 }
1174
1175 for (VideoImgProxy* item : closed_video_image_viewer_list_) {
1176 item->channel_name_combobox_.addItem(str);
1177 }
1178 }
1179
1180 if (msgType.contains("pointcloud", Qt::CaseInsensitive)) {
1181 pointcloud_comboBox_->addItem(str);
1182 }
1183
1184 if (msgType.contains("radar", Qt::CaseInsensitive)) {
1185 for (RadarData* item : radarData_list_) {
1186 item->channel_name_combobox_.addItem(str);
1187 }
1188
1189 for (RadarData* item : closed_radarData_list_) {
1190 item->channel_name_combobox_.addItem(str);
1191 }
1192 }
1193}

◆ resizeEvent()

void MainWindow::resizeEvent ( QResizeEvent *  event)
overrideprotected

在文件 main_window.cc 第 1215 行定义.

1215 {
1216 QMainWindow::resizeEvent(event);
1217 calculateWH();
1218}

◆ TopologyChanged()

void MainWindow::TopologyChanged ( const apollo::cyber::proto::ChangeMsg &  change_msg)

在文件 main_window.cc 第 1126 行定义.

1127 {
1129 changeMsg.change_type() &&
1130 apollo::cyber::proto::RoleType::ROLE_WRITER == changeMsg.role_type() &&
1131 apollo::cyber::proto::OperateType::OPT_JOIN == changeMsg.operate_type()) {
1132 AddNewWriter(changeMsg.role_attr());
1133 }
1134}
void AddNewWriter(const apollo::cyber::proto::RoleAttributes &role)

该类的文档由以下文件生成: