diff --git a/carlist.cpp b/carlist.cpp index 96f3ba2..2624a2e 100644 --- a/carlist.cpp +++ b/carlist.cpp @@ -10,6 +10,7 @@ CarList::CarList(QWidget *parent) : ui(new Ui::CarList) { ui->setupUi(this); + setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); setWindowTitle("车辆列表"); setGeometry(parent->x() + parent->width(), y() + parent->height() / 2, 400, 450); hide(); @@ -38,6 +39,12 @@ CarList *CarList::getInstance() return m_instance; } +void CarList::closeEvent(QCloseEvent *e) +{ + emit onCloseButtonClicked(); + e->accept(); +} + FakeCar::FakeCar() { diff --git a/carlist.h b/carlist.h index c009bbd..6403527 100644 --- a/carlist.h +++ b/carlist.h @@ -33,6 +33,8 @@ private: QStringList header; QList* m_list; QTimer *timer; + + }; class CarList : public QDialog @@ -44,7 +46,9 @@ public: void setAdapter(Adapter* adapter); static CarList* newInstance(QWidget* parent); static CarList* getInstance(); - + void closeEvent(QCloseEvent *e); +signals: + void onCloseButtonClicked(void); private: static CarList* m_instance; diff --git a/logwindow.cpp b/logwindow.cpp index f2bb627..f41450a 100644 --- a/logwindow.cpp +++ b/logwindow.cpp @@ -2,6 +2,7 @@ #include "ui_logwindow.h" #include +#include LogWindow* LogWindow::m_instance = nullptr; @@ -11,6 +12,7 @@ LogWindow::LogWindow(QWidget *parent) : ui(new Ui::LogWindow) { ui->setupUi(this); + setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); text = ui->text; setWindowTitle("日志窗口"); setGeometry(parent->x() + parent->width(), y(), 400, 450); @@ -35,6 +37,12 @@ void LogWindow::i(QString text) getInstance()->text->append(QTime::currentTime().toString("hh:mm:ss")+":"+text); } +void LogWindow::closeEvent(QCloseEvent *e) +{ + emit onCloseButtonClicked(); + e->accept(); +} + //void LogWindow::i(char* text) //{ // getInstance()->text->append(QTime::currentTime().toString("hh:mm:ss")+":"+text); diff --git a/logwindow.h b/logwindow.h index a4a78c3..28a109b 100644 --- a/logwindow.h +++ b/logwindow.h @@ -19,7 +19,9 @@ public: static LogWindow* getInstance(); static LogWindow* newInstance(QWidget* parent); static void i(QString text); - // static void i(char* text); + void closeEvent(QCloseEvent *e); +signals: + void onCloseButtonClicked(void); private: static LogWindow* m_instance; diff --git a/mainwindow.cpp b/mainwindow.cpp index 93d574b..650ba84 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -19,8 +19,12 @@ MainWindow::MainWindow(QWidget *parent) : LoginDialog::getInstance(this); Monitor *monitor = new Monitor(this); + setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint); resize(monitor->size()); installEventFilter(this); + + connect(logWindow, &LogWindow::onCloseButtonClicked, monitor, &Monitor::closeLogWindow); + connect(list, &CarList::onCloseButtonClicked, monitor, &Monitor::closeListWindow); } MainWindow::~MainWindow() diff --git a/monitor.cpp b/monitor.cpp index 9d2ed4f..8b9d1c0 100644 --- a/monitor.cpp +++ b/monitor.cpp @@ -48,13 +48,26 @@ Monitor::Monitor(MainWindow *parent) : void Monitor::showEvent(QShowEvent *event) { QWidget::showEvent(event); - QTimer *timer = new QTimer(this); - timer->setSingleShot(true); - connect(timer, &QTimer::timeout, [this]() { - emit this->ui->showList->toggle(); - emit this->ui->showLog->toggle(); - }); - timer->start(100); // 延时100ms,等待窗口创建完毕后执行,哈哈哈哈哈 + if (!initialized) { + QTimer *timer = new QTimer(this); + timer->setSingleShot(true); + connect(timer, &QTimer::timeout, [this]() { + emit this->ui->showList->toggle(); + emit this->ui->showLog->toggle(); + }); + timer->start(100); // 延时100ms,等待窗口创建完毕后执行,哈哈哈哈哈 + initialized = true; + } +} + +void Monitor::closeLogWindow() +{ + ui->showLog->setChecked(false); +} + +void Monitor::closeListWindow() +{ + ui->showList->setChecked(false); } Monitor::~Monitor() diff --git a/monitor.h b/monitor.h index c014546..173bad1 100644 --- a/monitor.h +++ b/monitor.h @@ -21,6 +21,8 @@ class Monitor : public QWidget public: explicit Monitor(MainWindow *parent = 0); void showEvent(QShowEvent *event); + void closeLogWindow(); + void closeListWindow(); ~Monitor(); private: @@ -28,6 +30,7 @@ private: Ui::Monitor *ui; void addCar(); Adapter *adapter; + bool initialized = false; }; #endif // MONITOR_H