OneEyeMap.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. #include "OneEyeMap.h"
  2. #include "ui_oneeyemap.h"
  3. #include <QApplication>
  4. #include <QPainter>
  5. #include <QPaintEvent>
  6. #include "GlobalInfo.h"
  7. #include "OneOsc.h"
  8. OneEyeMap::OneEyeMap(QWidget *parent) :
  9. QWidget(parent),
  10. ui(new Ui::OneEyeMap)
  11. {
  12. ui->setupUi(this);
  13. m_logger = spdlog::get("EyeMap");
  14. if(m_logger == nullptr)
  15. {
  16. SPDLOG_ERROR("获取 EyeMap logger 失败");
  17. return;
  18. }
  19. /* 初始化变量,加载qss */
  20. // QFile fileQss(":/qss/OneEyeMap/OneEyeMap.qss");
  21. QFile fileQss(":/qss/OneEyeMap/OneEyeMap.qss");
  22. if(fileQss.open(QFile::ReadOnly))
  23. {
  24. QString qss = fileQss.readAll();
  25. this->setStyleSheet(qss);
  26. fileQss.close();
  27. } else
  28. {
  29. SPDLOG_LOGGER_ERROR(m_logger, "加载qss文件失败");
  30. }
  31. /* 初始化变量 */
  32. // m_info.uid = EyeMapUID::EMUID_0;
  33. /* 自定义大小 */
  34. // setFixedSize(1600, 900);
  35. /* 设置水平刻度和垂直刻度数目 */
  36. m_hScaleNum = 6;
  37. m_vScaleNum = 4;
  38. /* 设置绘制区域 */
  39. m_leftMargin = 70;
  40. m_topMargin = 24;
  41. m_rightMargin = 24;
  42. m_bottomMargin = 24;
  43. /* 设置刻度区域 */
  44. m_rectScaleValue.setX(0);
  45. m_rectScaleValue.setY(ui->widget_title->height());
  46. m_rectScaleValue.setWidth(this->width());
  47. m_rectScaleValue.setHeight(this->height() - ui->widget_title->height());
  48. /* 设置参考颜色区域 */
  49. m_rectRefColor.setX(m_rectScaleValue.width() - m_rightMargin - 60);
  50. m_rectRefColor.setY(m_rectScaleValue.y() + 7);
  51. m_rectRefColor.setWidth(60);
  52. m_rectRefColor.setHeight(10);
  53. /* 设置眼图区域 */
  54. m_rectEyeMap.setX(m_leftMargin);
  55. m_rectEyeMap.setY(m_rectScaleValue.y() + m_topMargin);
  56. m_rectEyeMap.setWidth(m_rectScaleValue.width() - m_leftMargin - m_rightMargin);
  57. m_rectEyeMap.setHeight(m_rectScaleValue.height() - m_topMargin - m_bottomMargin);
  58. /* 设置“暂无设备”、“设备离线”图片 */
  59. m_rectNoDevice.setRect(0, 0, 280, 160);
  60. m_pixmapNoDevice = new QPixmap(":/image/Resource/image/dev_none.png");
  61. m_pixmapDeviceOffline = new QPixmap(":/image/Resource/image/dev_outline.png");
  62. /* 设置定时器 */
  63. m_timer.setTimerType(Qt::PreciseTimer);
  64. m_timer.setSingleShot(false);
  65. connect(&m_timer, &QTimer::timeout, this, &OneEyeMap::do_update);
  66. m_timer.start(1000); /* 1s刷新一次 */
  67. // connect(&GOscDataInfo, &OscilloscopeData::signal_updateOneEyeMap, this, &OneEyeMap::do_updateColorMatrix);
  68. connect(&GOscDataInfo, &OscilloscopeData::signal_oscOffline, this, &OneEyeMap::do_deviceOffline);
  69. connect(&GOscDataInfo, &OscilloscopeData::signal_oscOnline, this, &OneEyeMap::do_deviceOnline);
  70. SPDLOG_LOGGER_INFO(m_logger, "{} OneEyeMap 初始化成功", m_info.channelInfo.channelName.toStdString());
  71. }
  72. OneEyeMap::~OneEyeMap()
  73. {
  74. delete ui;
  75. }
  76. /* 根据通道号获取示波器指针 */
  77. void OneEyeMap::getOneOscFromGlobalOscData()
  78. {
  79. /* 初始化本地的颜色矩阵 */
  80. if(m_colorMatrix == nullptr)
  81. {
  82. m_colorMatrix = new EyeColorMatrix();
  83. m_colorMatrix->initEyeMapData(this->width(), this->height());
  84. }
  85. m_osc = GOscDataInfo.findOsc(m_info.channelInfo.channel);
  86. if(m_osc == nullptr)
  87. {
  88. SPDLOG_LOGGER_ERROR(m_logger, "获取示波器指针错误! 通道号: {}", static_cast<int>(m_info.channelInfo.channel));
  89. return;
  90. }
  91. m_osc->setColorMatrixPtr(m_info.channelInfo.channel, m_colorMatrix);
  92. /* 先设置为不使用通道采集 */
  93. m_osc->setChannelUsed(m_info.channelInfo.channel, false);
  94. }
  95. /* 设置UID,只能设置一次 */
  96. // void OneEyeMap::setUID(EyeMapUID uid)
  97. // {
  98. // if(m_info.uid == EyeMapUID::EMUID_0)
  99. // {
  100. // m_info.uid = uid;
  101. // }
  102. // }
  103. /* 设置标题 */
  104. void OneEyeMap::setTitle(const QString &title)
  105. {
  106. m_info.title = title;
  107. ui->label_title->setText(title);
  108. }
  109. /* 设置颜色 */
  110. void OneEyeMap::setTitleBarColor(const QColor &color)
  111. {
  112. m_info.titleBarColor = color;
  113. // QString qss = QString("background-color: %1;border-radius: 4px;").arg(color.name());
  114. QString qss = QString("background-color: %1; border-top-left-radius: 4px; border-top-right-radius: 4px;").arg(color.name());
  115. ui->widget_title->setStyleSheet(qss);
  116. }
  117. /* 设置是否显示 */
  118. void OneEyeMap::setShow(bool isShow)
  119. {
  120. m_info.isShow = isShow;
  121. if(isShow)
  122. {
  123. m_osc->setChannelUsed(m_info.channelInfo.channel, true);
  124. this->show();
  125. } else
  126. {
  127. m_osc->setChannelUsed(m_info.channelInfo.channel, false);
  128. this->hide();
  129. }
  130. }
  131. /* 设置电压值 */
  132. void OneEyeMap::setVoltageRange(OscVoltageRange range)
  133. {
  134. m_info.voltageRange = range;
  135. /* 设置示波器的电压范围 */
  136. if(m_osc != nullptr)
  137. {
  138. if(static_cast<int>(m_info.channelInfo.channel) % 2 == 1)
  139. {
  140. m_osc->setChannelARange(range);
  141. } else
  142. {
  143. m_osc->setChannelBRange(range);
  144. }
  145. }
  146. }
  147. /* 设置时间刻度 */
  148. void OneEyeMap::setTimeGridValue(OscTimeGridValue value)
  149. {
  150. m_info.tGridValue = value;
  151. /* 设置示波器的时间刻度 */
  152. if(m_osc != nullptr)
  153. {
  154. m_osc->setTimeGridValue(value);
  155. }
  156. }
  157. /* 更新组件信息 */
  158. void OneEyeMap::updateInfo(const OneEyeMapInfo &info)
  159. {
  160. // m_info = info;
  161. setTitle(info.title);
  162. setTitleBarColor(info.titleBarColor);
  163. setChannelInfo(info.channelInfo);
  164. setShow(info.isShow);
  165. setVoltageRange(info.voltageRange);
  166. setTimeGridValue(info.tGridValue);
  167. update();
  168. }
  169. /* 只更新设置个数页面的信息 */
  170. void OneEyeMap::updateSettingNum(const OneEyeMapInfo &info)
  171. {
  172. setNum(info.num);
  173. setTitle(info.title);
  174. setTitleBarColor(info.titleBarColor);
  175. setChannelInfo(info.channelInfo);
  176. }
  177. /* 重置眼图显示区域为默认 */
  178. void OneEyeMap::resetEyeMap()
  179. {
  180. m_colorMatrix->initEyeMapData(this->width(), this->height());
  181. update();
  182. }
  183. /* 刷新页面 */
  184. void OneEyeMap::do_update()
  185. {
  186. // SPDLOG_LOGGER_DEBUG(m_logger, "{} 刷新页面", m_info.title.toStdString());
  187. if(!m_osc->isOpen())
  188. {
  189. return;
  190. }
  191. update();
  192. }
  193. /* 设备离线了 */
  194. void OneEyeMap::do_deviceOffline(int oscNum)
  195. {
  196. /* 判断是不是这个编号 */
  197. if(static_cast<OscChnNum>(oscNum) != m_info.channelInfo.channel)
  198. {
  199. return;
  200. }
  201. SPDLOG_LOGGER_WARN(m_logger, "{} 离线了", oscNum, m_info.channelInfo.channelName.toStdString());
  202. m_isOpen = false;
  203. update();
  204. }
  205. /* 设备上线了 */
  206. void OneEyeMap::do_deviceOnline(int oscNum)
  207. {
  208. /* 判断是不是这个编号 */
  209. if(static_cast<OscChnNum>(oscNum) != m_info.channelInfo.channel)
  210. {
  211. return;
  212. }
  213. m_isOpen = true;
  214. update();
  215. }
  216. /**
  217. * @brief 绘制图形
  218. *
  219. * @param event
  220. */
  221. void OneEyeMap::paintEvent(QPaintEvent *event)
  222. {
  223. if(m_colorMatrix == nullptr)
  224. {
  225. return;
  226. }
  227. QPainter painter(this);
  228. painter.setRenderHint(QPainter::Antialiasing, true);
  229. /******************** 绘制背景 ********************/
  230. drawBackground(painter);
  231. ui->widget_title->show();
  232. /* 判断设备是否打开,没打开就显示“暂无设备”图片 */
  233. if(!m_isOpen)
  234. {
  235. // ui->widget_title->hide();
  236. drawNoDevice(painter);
  237. event->accept();
  238. return;
  239. }
  240. m_colorMatrix->mutexEyeData.lock();
  241. // SPDLOG_LOGGER_DEBUG(m_logger, "{} 获取到了颜色矩阵锁", m_info.title.toStdString());
  242. /******************** 绘制刻度值 ********************/
  243. drawScaleValue(painter);
  244. /******************** 绘制刻度网格 *********************/
  245. drawScale(painter);
  246. // SPDLOG_LOGGER_DEBUG(m_logger, "width = {}, height = {}", this->width(), this->height());
  247. // SPDLOG_LOGGER_DEBUG(m_logger, "m_rectScaleValue: x = {}, y = {}, width = {}, height = {}", m_rectScaleValue.x(), m_rectScaleValue.y(), m_rectScaleValue.width(), m_rectScaleValue.height());
  248. // SPDLOG_LOGGER_DEBUG(m_logger, "m_rectEyeMap: x = {}, y = {}, width = {}, height = {}", m_rectEyeMap.x(), m_rectEyeMap.y(), m_rectEyeMap.width(), m_rectEyeMap.height());
  249. /******************** 绘制眼图区域 ********************/
  250. drawEyeMap(painter);
  251. m_colorMatrix->mutexEyeData.unlock();
  252. event->accept();
  253. }
  254. /* 缩放事件 */
  255. void OneEyeMap::resizeEvent(QResizeEvent *event)
  256. {
  257. /* 设置刻度区域 */
  258. m_rectScaleValue.setX(0);
  259. m_rectScaleValue.setY(ui->widget_title->height());
  260. m_rectScaleValue.setWidth(this->width());
  261. m_rectScaleValue.setHeight(this->height() - ui->widget_title->height());
  262. /* 设置参考颜色区域 */
  263. m_rectRefColor.setX(m_rectScaleValue.width() - m_rightMargin - 60);
  264. m_rectRefColor.setY(m_rectScaleValue.y() + 7);
  265. m_rectRefColor.setWidth(60);
  266. m_rectRefColor.setHeight(10);
  267. /* 设置眼图区域 */
  268. m_rectEyeMap.setX(m_leftMargin);
  269. m_rectEyeMap.setY(m_rectScaleValue.y() + m_topMargin);
  270. m_rectEyeMap.setWidth(m_rectScaleValue.width() - m_leftMargin - m_rightMargin);
  271. m_rectEyeMap.setHeight(m_rectScaleValue.height() - m_topMargin - m_bottomMargin);
  272. /* 重新设置颜色矩阵 */
  273. if(m_colorMatrix != nullptr)
  274. {
  275. m_colorMatrix->initEyeMapData(this->width(), this->height());
  276. }
  277. /* 刷新一下页面 */
  278. update();
  279. event->accept();
  280. }
  281. /* 绘制背景 */
  282. void OneEyeMap::drawBackground(QPainter &painter)
  283. {
  284. /* 绘制背景颜色 */
  285. painter.setPen(Qt::NoPen);
  286. QBrush brush;
  287. brush.setColor("#1E1E1E");
  288. brush.setStyle(Qt::SolidPattern);
  289. painter.setBrush(brush);
  290. painter.drawRect(m_rectScaleValue);
  291. }
  292. /* 绘制刻度区域 */
  293. void OneEyeMap::drawScaleValue(QPainter &painter)
  294. {
  295. /* 绘制刻度值 */
  296. QPen pen;
  297. pen.setColor("#C8CCD2");
  298. painter.setPen(pen);
  299. QRect rectText(0, 0, 50, 14);
  300. QFont font;
  301. font.setFamily("思源黑体R");
  302. font.setPixelSize(14);
  303. painter.setFont(font);
  304. int oneScale = m_rectEyeMap.height() / m_vScaleNum;
  305. // SPDLOG_LOGGER_DEBUG(m_logger, "oneScale = {}", oneScale);
  306. /* 绘制电压值 */
  307. for(int i = 0; i <= m_vScaleNum; i++)
  308. {
  309. /* 计算字体区域坐标 */
  310. rectText.moveTo(10, m_rectEyeMap.y() + oneScale * i - 7);
  311. painter.drawText(rectText, Qt::AlignRight | Qt::AlignVCenter, getVScaleValue(i));
  312. }
  313. /* 绘制时间刻度值 */
  314. int oneTime = m_rectEyeMap.width() / m_hScaleNum;
  315. for(int i = 0; i <= m_hScaleNum; i++)
  316. {
  317. rectText.moveTo(m_rectEyeMap.x() + oneTime * i - 25, m_rectEyeMap.y() + m_rectEyeMap.height() + 4);
  318. painter.drawText(rectText, Qt::AlignCenter, getTimeValue(i));
  319. }
  320. /* 绘制参渐变考颜色 */
  321. drawRefColor(painter);
  322. }
  323. /* 绘制刻度 */
  324. void OneEyeMap::drawScale(QPainter &painter)
  325. {
  326. /* 限制操作区域,不过坐标零点依旧是widget的(0,0) */
  327. painter.setClipRect(m_rectEyeMap);
  328. /* 绘制背景颜色 */
  329. painter.setPen(Qt::NoPen);
  330. QBrush brush;
  331. brush.setColor(QColor(0, 0, 0, 0.8 * 255));
  332. brush.setStyle(Qt::SolidPattern);
  333. painter.setBrush(brush);
  334. painter.drawRect(m_rectEyeMap);
  335. /* 绘制刻度线 */
  336. QPen pen;
  337. pen.setWidth(1);
  338. pen.setStyle(Qt::SolidLine);
  339. /* 绘制中线 */
  340. int startX = m_rectEyeMap.x();
  341. int startY = m_rectEyeMap.y();
  342. int width = m_rectEyeMap.width();
  343. int height = m_rectEyeMap.height();
  344. pen.setColor(QColor(255, 255, 255, 0.35 * 255));
  345. pen.setWidth(2);
  346. painter.setPen(pen);
  347. painter.drawLine(startX, startY + (height / 2), startX + width, startY + (height / 2)); /* 绘制水平中线 */
  348. painter.drawLine(startX + (width / 2), startY, startX + (width / 2), startY + height); /* 绘制垂直中线 */
  349. /* 绘制中线上的刻度 */
  350. int hScale = m_hScaleNum * 5;
  351. int vScale = m_vScaleNum * 5;
  352. double scaleW = width * 1.0 / hScale;
  353. double scaleH = height * 1.0 / vScale;
  354. QVector<QLineF> wLines;
  355. QVector<QLineF> hLines;
  356. for(int i = 0; i < hScale; i++)
  357. {
  358. QLineF line1(startX + i * scaleW, startY + height / 2.0 - 4, startX + i * scaleW, startY + height / 2.0 + 4);
  359. wLines.append(line1);
  360. }
  361. for(int i = 0; i < vScale; i++)
  362. {
  363. QLineF line2(startX + width / 2.0 - 4, startY + height - i * scaleH, startX + width / 2.0 + 4, startY + height - i * scaleH);
  364. hLines.append(line2);
  365. }
  366. painter.drawLines(wLines);
  367. painter.drawLines(hLines);
  368. /* 绘制网格,这里是网格线 */
  369. pen.setWidth(1);
  370. pen.setColor(QColor(255, 255, 255, 0.15 * 255));
  371. painter.setPen(pen);
  372. scaleH = height * 1.0 / m_vScaleNum;
  373. scaleW = width * 1.0 / m_hScaleNum;
  374. /* 水平线 */
  375. for(int i = 1; i < m_vScaleNum; i++)
  376. {
  377. int y = startY + i * scaleH;
  378. QLineF line1(startX, y, startX + width, y);
  379. painter.drawLine(line1);
  380. }
  381. /* 垂直线 */
  382. for(int i = 1; i < m_hScaleNum; i++)
  383. {
  384. int x = startX + i * scaleW;
  385. QLineF line1(x, startY, x, startY + height);
  386. painter.drawLine(line1);
  387. }
  388. /* 绘制虚线 */
  389. // painter.setPen(pen);
  390. // scaleW = width / 10.0;
  391. // scaleH = height / 10.0;
  392. // int x = 0;
  393. // int y = 0;
  394. // QVector<QLineF> wGridLines;
  395. // QVector<QLineF> hGridLines;
  396. // for(int i = 1; i < 10; i++)
  397. // {
  398. // y = i * scaleH;
  399. // while(true)
  400. // {
  401. // x = x + 8;
  402. // QLineF line1(x, y, x + 2, y);
  403. // wGridLines.append(line1);
  404. // if(x >= width)
  405. // {
  406. // x = 0;
  407. // y = 0;
  408. // break;
  409. // }
  410. // }
  411. // }
  412. // x = 0;
  413. // y = 0;
  414. // for(int i = 1; i < 10; i++)
  415. // {
  416. // x = i * scaleW;
  417. // while(true)
  418. // {
  419. // y = y + 8;
  420. // QLineF line1(x, y, x, y + 2);
  421. // hGridLines.append(line1);
  422. // if(y >= height)
  423. // {
  424. // x = 0;
  425. // y = 0;
  426. // break;
  427. // }
  428. // }
  429. // }
  430. // painter.drawLines(wGridLines);
  431. // painter.drawLines(hGridLines);
  432. }
  433. /* 绘制眼图区域 */
  434. void OneEyeMap::drawEyeMap(QPainter &painter)
  435. {
  436. // SPDLOG_ERROR("绘制眼图区域");
  437. /* 绘制眼图,就是绘制 1000 * 256 个矩形 */
  438. painter.setPen(Qt::NoPen);
  439. for(int i = 0; i < g_HorPixel; i++)
  440. {
  441. for(int j = 0; j < g_VerPixel; j++)
  442. {
  443. /* 这里需要根据是否需要显示进行判断,不然全绘制太卡了 */
  444. if(m_colorMatrix->dataMatrix[i][j].isDraw == false)
  445. {
  446. continue;
  447. }
  448. /* 打印出颜色 */
  449. // SPDLOG_LOGGER_WARN(m_logger, "颜色: {}", m_eyeColorMatrix->dataMatrix[i][j].brush.color().name().toStdString());
  450. painter.setBrush(m_colorMatrix->dataMatrix[i][j].brush);
  451. painter.drawRect(m_colorMatrix->dataMatrix[i][j].rect);
  452. }
  453. }
  454. }
  455. /* 绘制“暂无设备” */
  456. void OneEyeMap::drawNoDevice(QPainter &painter)
  457. {
  458. int x = (this->width() - m_rectNoDevice.width()) / 2;
  459. int y = (this->height() - m_rectNoDevice.height()) / 2;
  460. m_rectNoDevice.moveTo(x, y);
  461. painter.drawPixmap(m_rectNoDevice, *m_pixmapDeviceOffline);
  462. }
  463. /* 绘制参考渐变色 */
  464. void OneEyeMap::drawRefColor(QPainter &painter)
  465. {
  466. QLinearGradient linearGradient(m_rectRefColor.topLeft(), m_rectRefColor.bottomRight());
  467. linearGradient.setColorAt(0, QColor("#003590"));
  468. linearGradient.setColorAt(0.4, QColor(0, 255, 255));
  469. linearGradient.setColorAt(0.6, QColor(0, 255, 0));
  470. linearGradient.setColorAt(0.8, QColor(255, 255, 0));
  471. linearGradient.setColorAt(1, QColor("#FF4123"));
  472. painter.setBrush(linearGradient);
  473. painter.setPen(Qt::NoPen);
  474. painter.drawRect(m_rectRefColor);
  475. }
  476. /* 获取一个格子的电压值 */
  477. QString OneEyeMap::getVScaleValue(int index)
  478. {
  479. index = 2 - index;
  480. if(m_info.voltageRange == OscVoltageRange::CR_100MV)
  481. {
  482. return QString::number(0.1 * index) + "V";
  483. } else if(m_info.voltageRange == OscVoltageRange::CR_250MV)
  484. {
  485. return QString::number(0.25 * index) + "V";
  486. } else if(m_info.voltageRange == OscVoltageRange::CR_500MV)
  487. {
  488. return QString::number(0.5 * index) + "V";
  489. } else if(m_info.voltageRange == OscVoltageRange::CR_1V)
  490. {
  491. return QString::number(1.0 * index) + "V";
  492. } else if(m_info.voltageRange == OscVoltageRange::CR_2V5)
  493. {
  494. return QString::number(2.5 * index) + "V";
  495. } else if(m_info.voltageRange == OscVoltageRange::CR_5V)
  496. {
  497. return QString::number(5.0 * index) + "V";
  498. } else if(m_info.voltageRange == OscVoltageRange::CR_8V)
  499. {
  500. return QString::number(8.0 * index) + "V";
  501. } else
  502. {
  503. return QString::number(0.1 * index) + "V";
  504. }
  505. }
  506. /* 获取一个时间值 */
  507. QString OneEyeMap::getTimeValue(int index)
  508. {
  509. QString str;
  510. switch (m_info.tGridValue)
  511. {
  512. case OscTimeGridValue::TGV_20NS:
  513. str = QString::number(index * 20 / 1000.0) + "us";
  514. break;
  515. case OscTimeGridValue::TGV_50NS:
  516. str = QString::number(index * 50 / 1000.0) + "us";
  517. break;
  518. case OscTimeGridValue::TGV_100NS:
  519. str = QString::number(index * 100 / 1000.0) + "us";
  520. break;
  521. case OscTimeGridValue::TGV_200NS:
  522. str = QString::number(index * 200 / 1000.0) + "us";
  523. break;
  524. case OscTimeGridValue::TGV_500NS:
  525. str = QString::number(index * 500 / 1000.0) + "us";
  526. break;
  527. case OscTimeGridValue::TGV_1US:
  528. str = QString::number(index * 1) + "us";
  529. break;
  530. case OscTimeGridValue::TGV_2US:
  531. str = QString::number(index * 2) + "us";
  532. break;
  533. case OscTimeGridValue::TGV_5US:
  534. str = QString::number(index * 5) + "us";
  535. break;
  536. case OscTimeGridValue::TGV_10US:
  537. str = QString::number(index * 10) + "us";
  538. break;
  539. case OscTimeGridValue::TGV_20US:
  540. str = QString::number(index * 20) + "us";
  541. break;
  542. case OscTimeGridValue::TGV_100US:
  543. str = QString::number(index * 100) + "us";
  544. break;
  545. default:
  546. str = "us";
  547. break;
  548. }
  549. return str;
  550. }