#ifndef STENDOSTANOV_H#define STENDOSTANOV_H#include <QMainWindow>#include <QtGui>#include <QPixmap>#include "startmenu.h"//Учебчный стенд остановы турбиныclass stendOstanov : public QMainWindow{ Q_OBJECTpublic: explicit stendOstanov(startMenu *startMenu, QWidget *parent = 0); signals:protected: virtual void mousePressEvent (QMouseEvent *event); void mouseMoveEvent (QMouseEvent *event); private slots: void changeSelectND(int numberSelectND); void launchingTest(); void interruptingTest();private: //Виджеты окна QComboBox *selectMode; QPushButton *startTest; QPushButton *interruptTest; QLabel *minutes; QLabel *separator; QLabel *seconds; QLabel *uprTurbImage; QLabel *textLabel; QLabel *ErrorLabel; QLabel *reportTest; QScrollArea *scrollReport; };#endif // STENDOSTANOV_H
#include "stendostanov.h"stendOstanov::stendOstanov(startMenu *startMenu, QWidget *parent) : QMainWindow(parent){ //Устанавливаем параметры окна стенда останова турбины //------------- //Прописываем параметры окна стенда останова турбины setWindowTitle(QObject::trUtf8("Учебчный стенд останова турбины")); setWindowFlags(Qt::Window | Qt::WindowSystemMenuHint); setMinimumSize(800, 420); setMaximumSize(800, 420); setMouseTracking(true); //------------- //Элементы компановки виджетов в окне //Основной элемент компановки окна QBoxLayout *mainLayout = new QBoxLayout(QBoxLayout::TopToBottom); //Элемент компановки верхней части элементов окна QHBoxLayout *topLayout = new QHBoxLayout(); //Элемент компановки таймера в верхней части элементов окна QHBoxLayout *timerkLayout = new QHBoxLayout(); //Элемент компановки нижней части элементов окна QHBoxLayout *bottomLayout = new QHBoxLayout(); //Элемент компановки правой части панели обучения/тестирования QVBoxLayout *rightPanelLayout = new QVBoxLayout(); //------------- //Виджеты окна тестирования по НД //Виджет отчета после проведения теста reportTest = new QLabel(""); reportTest->setScaledContents(true); reportTest->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); reportTest->setMinimumSize(730, 330); scrollReport = new QScrollArea(); scrollReport->setWidget(reportTest); scrollReport->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); scrollReport->setMinimumSize(750, 350); scrollReport->hide(); //Выбор теста из списка доступных selectMode = new QComboBox(); connect(selectMode, SIGNAL(currentIndexChanged(int)), this, SLOT(changeSelectND(int))); selectMode->addItem(QObject::trUtf8("Режим обучения")); selectMode->addItem(QObject::trUtf8("Режим тестирования")); //Кнопка старта теста startTest = new QPushButton(QObject::trUtf8("Начать тест")); connect(startTest, SIGNAL(clicked()), this, SLOT(launchingTest())); //Кнопка прерывания теста interruptTest = new QPushButton(QObject::trUtf8("Прервать тест")); connect(interruptTest, SIGNAL(clicked()), this, SLOT(interruptingTest())); interruptTest->setEnabled(false); //Виджеты таймера: минуты, ":", секунды minutes = new QLabel(); separator = new QLabel(":"); seconds = new QLabel(); //Схема управления паровой турбиной uprTurbImage = new QLabel(); QPixmap px; px.load("parturbina.png"); uprTurbImage->setPixmap(px); uprTurbImage->setMinimumSize(570,370); uprTurbImage->setMaximumSize(570,370); uprTurbImage->setScaledContents(true); QPalette pal = uprTurbImage->palette(); pal.setBrush(QPalette::Base, QBrush(Qt::black)); uprTurbImage->setPalette(pal); uprTurbImage->setFrameStyle(QFrame::Plain | QFrame::StyledPanel); uprTurbImage->setMouseTracking(true); //Текстовая метка об кол-ве ошибок и/или допущенной ошибке ErrorLabel = new QLabel(); ErrorLabel->setMinimumSize(200, 70); ErrorLabel->setMaximumSize(200, 70); pal = ErrorLabel->palette(); pal.setBrush(QPalette::Base, QBrush(Qt::black)); ErrorLabel->setPalette(pal); ErrorLabel->setFrameStyle(QFrame::Plain | QFrame::StyledPanel); ErrorLabel->setAlignment(Qt::AlignCenter); ErrorLabel->setScaledContents(true); ErrorLabel->setWordWrap(true); //Текст текущей операции в учебном стенде textLabel = new QLabel(); textLabel->setMinimumSize(200, 270); textLabel->setMaximumSize(200, 270); pal = textLabel->palette(); pal.setBrush(QPalette::Base, QBrush(Qt::black)); textLabel->setPalette(pal); textLabel->setFrameStyle(QFrame::Plain | QFrame::StyledPanel); textLabel->setAlignment(Qt::AlignCenter); textLabel->setScaledContents(true); textLabel->setWordWrap(true); //------------- //Компановка виджетов окна //Компановка виджетов таймера timerkLayout->addWidget(minutes); timerkLayout->addWidget(separator); timerkLayout->addWidget(seconds); //Компановка виджетов верхней части окна topLayout->addWidget(selectMode); topLayout->addSpacing(15); topLayout->addWidget(startTest); topLayout->addSpacing(15); topLayout->addWidget(interruptTest); topLayout->addSpacing(25); topLayout->addLayout(timerkLayout); topLayout->addStretch(); //Компановка правой части панели обучения/тестирования учебного стенда rightPanelLayout->addWidget(textLabel); rightPanelLayout->addSpacing(5); rightPanelLayout->addWidget(ErrorLabel); //Компановка виджетов нижней части окна bottomLayout->addWidget(uprTurbImage); bottomLayout->addLayout(rightPanelLayout); //Компановка всех элементов компановки окна mainLayout->addLayout(topLayout); mainLayout->addStretch(); mainLayout->addWidget(scrollReport); mainLayout->addLayout(bottomLayout); QWidget *centralWidget = new QWidget(); centralWidget->setMouseTracking(true); centralWidget->setLayout(mainLayout); this->setCentralWidget(centralWidget); // reportTest->setWordWrap(true);// Перенос слов}void stendOstanov::mousePressEvent(QMouseEvent *event){ int x = event->x(); int y = event->y(); qDebug()<<x + "|" + y << x << y; textLabel->setText(""); //ПВД 7 if (x >= 67 && x <= 116 && y >= 305 && y <= 402) textLabel->setText("PVD 7"); //ПВД 6 if (x >= 130 && x <= 184 && y >= 305 && y <= 402) textLabel->setText("PVD 6"); //ПВД 5 if (x >= 200 && x <= 234 && y >= 305 && y <= 402) textLabel->setText("PVD 5"); //Деаэратор if (x >= 263 && x <= 334 && y >= 265 && y <= 317) textLabel->setText("dearator"); //ПНД 3 if (x >= 373 && x <= 418 && y >= 305 && y <= 402) textLabel->setText("PND 3"); //ПНД 2 if (x >= 428 && x <= 475 && y >= 305 && y <= 402) textLabel->setText("PND 2"); //ПНД 1 if (x >= 487 && x <= 537 && y >= 305 && y <= 402) textLabel->setText("PND 1"); //Конденсатор if (x >= 414 && x <= 476 && y >= 223 && y <= 280) textLabel->setText("Kondensator"); //ЦВД if (x >= 194 && x <= 252 && y >= 90 && y <= 193) textLabel->setText("CVD"); //ЦСД if (x >= 335 && x <= 383 && y >= 90 && y <= 193) textLabel->setText("CSD"); //ЦНД if (x >= 419 && x <= 458 && y >= 90 && y <= 193) textLabel->setText("CND"); //Генератор if (x >= 489 && x <= 540 && y >= 119 && y <= 160) textLabel->setText("GENERATOR"); //Основной паропровод if (x >= 41 && x <= 85 && ((y >= 58 && y <= 82) || (y >= 198 && y <= 222))) textLabel->setText("OP");}void stendOstanov::mouseMoveEvent(QMouseEvent *event){ setWindowTitle("mouse event grabbed!"); int x = event->x(); int y = event->y(); textLabel->setText(""); //ПВД 7 if (x >= 67 && x <= 116 && y >= 305 && y <= 402) textLabel->setText("PVD 7"); //ПВД 6 if (x >= 130 && x <= 184 && y >= 305 && y <= 402) textLabel->setText("PVD 6"); //ПВД 5 if (x >= 200 && x <= 234 && y >= 305 && y <= 402) textLabel->setText("PVD 5"); //Деаэратор if (x >= 263 && x <= 334 && y >= 265 && y <= 317) textLabel->setText("dearator"); //ПНД 3 if (x >= 373 && x <= 418 && y >= 305 && y <= 402) textLabel->setText("PND 3"); //ПНД 2 if (x >= 428 && x <= 475 && y >= 305 && y <= 402) textLabel->setText("PND 2"); //ПНД 1 if (x >= 487 && x <= 537 && y >= 305 && y <= 402) textLabel->setText("PND 1"); //Конденсатор if (x >= 414 && x <= 476 && y >= 223 && y <= 280) textLabel->setText("Kondensator"); //ЦВД if (x >= 194 && x <= 252 && y >= 90 && y <= 193) textLabel->setText("CVD"); //ЦСД if (x >= 335 && x <= 383 && y >= 90 && y <= 193) textLabel->setText("CSD"); //ЦНД if (x >= 419 && x <= 458 && y >= 90 && y <= 193) textLabel->setText("CND"); //Генератор if (x >= 489 && x <= 540 && y >= 119 && y <= 160) textLabel->setText("GENERATOR"); //Основной паропровод if (x >= 41 && x <= 85 && ((y >= 58 && y <= 82) || (y >= 198 && y <= 222))) textLabel->setText("OP");}//Прерывание тестаvoid stendOstanov::interruptingTest(){}void stendOstanov::changeSelectND(int numberSelectND){ // numbertest = numberSelectND;}//Запуск тестированияvoid stendOstanov::launchingTest(){}
//ПВД 7 if (x >= 67 && x <= 116 && y >= 305 && y <= 402) textLabel->setText("PVD 7");