mainwindow.cpp 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent)
  4. : QMainWindow(parent)
  5. , ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. this->setWindowTitle("蓝方模型创建及雷达信号模拟生成软件");
  9. //radarServer = new RadarServer(this, 1234);
  10. radarServerThread = new QThread(this);
  11. radarSigGenThread = new QThread(this);
  12. tableview = new QStandardItemModel;
  13. tableview->setHorizontalHeaderItem(0,new QStandardItem("雷达编号"));
  14. tableview->setHorizontalHeaderItem(1,new QStandardItem("工作状态"));
  15. tableview->setHorizontalHeaderItem(2,new QStandardItem("信号类型"));
  16. tableview->setHorizontalHeaderItem(3,new QStandardItem("载波频率"));
  17. rows = 0;
  18. radarServer = new RadarServer();
  19. radarSigGen = new RadarSigGen();
  20. radarServer->moveToThread(radarServerThread);
  21. radarSigGen->moveToThread(radarSigGenThread);
  22. connect(radarServer,SIGNAL(SigRadarGen(int)),radarSigGen,SLOT(SlotRadarGen(int)));
  23. radarServerThread->start();
  24. radarSigGenThread->start();
  25. ui->lineEdit_sigType->setText(QString::fromStdString("相位编码"));
  26. ui->lineEdit_fc->setText(QString::number(1e9,'f',2));
  27. ui->lineEdit_T->setText(QString::number(5e-6,'f',6));
  28. ui->lineEdit_PRF->setText(QString::number(1/(20e6),'f',8));
  29. ui->lineEdit_BW->setText(QString::number(20e6,'f',2));
  30. simDisplay = new SimDisplay(this);
  31. ui->lineEdit_sigType->setDisabled(true);
  32. ui->lineEdit_fc->setDisabled(true);
  33. ui->lineEdit_T->setDisabled(true);
  34. ui->lineEdit_PRF->setDisabled(true);
  35. ui->lineEdit_BW->setDisabled(true);
  36. }
  37. MainWindow::~MainWindow()
  38. {
  39. delete ui;
  40. }
  41. void MainWindow::on_pushButton_42_clicked()
  42. {
  43. simDisplay->show();
  44. simDisplay->setModal(true);
  45. }
  46. void MainWindow::on_comboBox_radarType_currentIndexChanged(const QString &arg1)
  47. {
  48. if(arg1.toStdString()=="模型1"){
  49. ui->lineEdit_sigType->setText(QString::fromStdString("相位编码"));
  50. ui->lineEdit_fc->setText(QString::number(1e9,'f',2));
  51. ui->lineEdit_T->setText(QString::number(5e-6,'f',6));
  52. ui->lineEdit_PRF->setText(QString::number(1/(20e6),'f',8));
  53. ui->lineEdit_BW->setText(QString::number(20e6,'f',2));
  54. }
  55. }
  56. void MainWindow::on_pushButton_5_clicked()
  57. {
  58. // 1.获取画布
  59. std::string chooseIndex = ui->comboBox_28->currentText().toStdString();
  60. MyChartView = ui->SimShow;
  61. QValueAxis MyAxisX; // X轴
  62. QValueAxis MyAxisY; // Y轴
  63. MyAxisX.setRange(0,100);
  64. MyAxisY.setRange(-1,1);
  65. MyAxisX.setTitleText(QStringLiteral("时间"));
  66. MyAxisX.setTitleFont(QFont("宋体"));
  67. MyAxisX.setTickCount(10);
  68. MyAxisX.setGridLineVisible(true);
  69. MyAxisX.setLineVisible(true);
  70. MyAxisX.setGridLineColor(Qt::black);
  71. MyChart.addAxis(&MyAxisX,Qt::AlignLeft);
  72. MyChart.addAxis(&MyAxisY,Qt::AlignBottom);
  73. MyChartView->setChart(&MyChart);
  74. MyChartView->setRubberBand(QChartView::RectangleRubberBand);
  75. MyChart.setTitle(QString::fromStdString("信号生成预览"));
  76. // MyLineSeries.attachAxis(MyAxisX);
  77. // MyLineSeries.attachAxis(MyAxisY);
  78. double *currentSig;
  79. for(int i=0;i<interceptRadarNum;i++)
  80. {
  81. if(chooseIndex==interceptRadarList[i]->getIndex()){
  82. currentSig = interceptRadarList[i]->getSig();
  83. }
  84. }
  85. // 3.给序列对象添加数据
  86. for(int i = 0; i < 200000; i ++)
  87. {
  88. MyPointf << QPointF(i,currentSig[i]);
  89. }
  90. MyLineSeries.replace(MyPointf);
  91. MyLineSeries.attachAxis(&MyAxisX);
  92. // 4.将序列添加到坐标对象中
  93. MyChart.addSeries(&MyLineSeries);
  94. MyChart.addAxis(&MyAxisX,Qt::AlignLeft);
  95. MyChart.addAxis(&MyAxisY,Qt::AlignBottom);
  96. // 2.展示坐标对象(将坐标对象放到画布上)
  97. }
  98. void MainWindow::on_CreateInterceptRadarButton_clicked()
  99. {
  100. std::cout<<ui->comboBox_radarType->currentIndex();
  101. if(ui->comboBox_radarType->currentIndex()==0){//模型1
  102. radarSigGen->SlotRadarGen(1);
  103. interceptRadarList[interceptRadarNum] = new interceptRadar();
  104. interceptRadarList[interceptRadarNum]->setIndex(ui->lineEdit_interceptRadarId->text().toStdString());
  105. interceptRadarList[interceptRadarNum++]->setSig(radarSigGen->sig);
  106. int lines = 0;
  107. tableview->setItem(rows, lines++, new QStandardItem(ui->lineEdit_interceptRadarId->text()));
  108. tableview->setItem(rows, lines++, new QStandardItem("正常"));
  109. tableview->setItem(rows, lines++, new QStandardItem("相位编码"));
  110. tableview->setItem(rows++, lines++, new QStandardItem(ui->lineEdit_fc->text()));
  111. ui->tableView_6->setModel(tableview);
  112. ui->tableView_11->setModel(tableview);
  113. ui->comboBox_28->addItem(ui->lineEdit_interceptRadarId->text());
  114. }
  115. if(ui->comboBox_radarType->currentIndex()==1){//模型1
  116. radarSigGen->SlotRadarGen(2);
  117. interceptRadarList[interceptRadarNum] = new interceptRadar();
  118. interceptRadarList[interceptRadarNum++]->setSig(radarSigGen->sig);
  119. ui->comboBox_28->addItem(ui->lineEdit_interceptRadarId->text());
  120. }
  121. if(ui->comboBox_radarType->currentIndex()==2){//模型1
  122. radarSigGen->SlotRadarGen(3);
  123. interceptRadarList[interceptRadarNum] = new interceptRadar();
  124. interceptRadarList[interceptRadarNum++]->setSig(radarSigGen->sig);
  125. ui->comboBox_28->addItem(ui->lineEdit_interceptRadarId->text());
  126. }
  127. }