#include "mainwindow.h"
#include "contrlList.h"
#include <QApplication>
#include <QFile>
#include <QTextStream>
#include <QString>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QFile qss_file(":/qss/style.qss");
qss_file.open(QFile::ReadOnly);
QTextStream stream(&qss_file);
QString file_string=stream.readAll();
w.setStyleSheet(file_string);
w.show();
return a.exec();
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QWidget>
#include <QSpacerItem>
#include<QSizePolicy>
#include <QCheckBox>
#include<QComboBox>
#include<QTimer>
#include "contrllist.h"
#include <QListWidgetItem>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QWidget *main_widget=new QWidget(this);
QVBoxLayout* main_layout=new QVBoxLayout(main_widget);
main_stackedwidget=new QStackedWidget();
main_layout->addWidget(main_stackedwidget);
QHBoxLayout* select_function_hbox=new QHBoxLayout();
QPushButton* logger_function_button=new QPushButton("日志");
QPushButton* warning_function_button=new QPushButton("警告");
QPushButton* deveie_control_button=new QPushButton("设备控制");
QPushButton* task_menage_button=new QPushButton("任务管理");
select_function_hbox->addWidget(logger_function_button);
select_function_hbox->addWidget(warning_function_button);
select_function_hbox->addWidget(deveie_control_button);
select_function_hbox->addWidget(task_menage_button);
main_layout->addLayout(select_function_hbox);
SetLoggerWidget();
SetDeveieControlWidget();
SetWainingWidegt();
SetTaskMessageWidget();
setCentralWidget(main_widget);
QTimer *check_waining_timer=new QTimer(this);
connect(check_waining_timer,&QTimer::timeout,this,check_waining_list);
check_waining_timer->start(1000);
connect(deveie_control_button,&QPushButton::clicked,[this](){main_stackedwidget->setCurrentWidget(devecie_contrl_widget);});
connect(warning_function_button,&QPushButton::clicked,[this](){main_stackedwidget->setCurrentWidget(waining_widget);});
connect(logger_function_button,&QPushButton::clicked,[this](){main_stackedwidget->setCurrentWidget(logger_widget);});
connect(task_menage_button,&QPushButton::clicked,[this](){main_stackedwidget->setCurrentWidget(task_widget);});
}
MainWindow::~MainWindow()
{
}
void MainWindow::SetLoggerWidget()
{
logger_widget=new QWidget();
QVBoxLayout* v_filter =new QVBoxLayout(logger_widget);
QHBoxLayout* h_filter=new QHBoxLayout(logger_widget);
v_filter->addLayout(h_filter);
QComboBox* log_level_combox=new QComboBox();
log_level_combox->setPlaceholderText("级别选择");
log_level_combox->addItem("1级别");
log_level_combox->addItem("时间");
QComboBox* log_time_combox=new QComboBox();
log_time_combox->setPlaceholderText("时间选择");
log_time_combox->addItem("今天");
log_time_combox->addItem("昨天");
log_time_combox->addItem("后天");
log_time_combox->addItem("大后天");
h_filter->addWidget(log_level_combox);
h_filter->addWidget(log_time_combox);
QListWidget* log_listwidget=new QListWidget();
v_filter->addWidget(log_listwidget);
log_listwidget->addItem("项目1");
log_listwidget->addItem("香满园");
main_stackedwidget->addWidget(logger_widget);
}
void MainWindow::SetDeveieControlWidget()
{
devecie_contrl_widget=new QWidget();
QVBoxLayout* select_layout =new QVBoxLayout(devecie_contrl_widget);
QListWidget* log_listwidget=new QListWidget();
QListWidgetItem* item=new QListWidgetItem();
QWidget* deveie_widget=new contrlList();
item->setSizeHint(deveie_widget->sizeHint());
log_listwidget->addItem(item);
log_listwidget->setItemWidget(item,deveie_widget);
select_layout->addWidget(log_listwidget);
main_stackedwidget->addWidget(devecie_contrl_widget);
}
void MainWindow::SetWainingWidegt()
{
waining_widget=new QWidget();
QVBoxLayout* v_filter =new QVBoxLayout(waining_widget);
QHBoxLayout* h_filter=new QHBoxLayout(waining_widget);
v_filter->addLayout(h_filter);
QComboBox* waining_level_combox=new QComboBox();
waining_level_combox->setPlaceholderText("级别选择");
waining_level_combox->addItem("级别");
waining_level_combox->addItem("时间");
QComboBox* waining_time_combox=new QComboBox();
waining_time_combox->setPlaceholderText("时间选择");
waining_time_combox->addItem("今天");
waining_time_combox->addItem("昨天");
waining_time_combox->addItem("后天");
waining_time_combox->addItem("大后天");
h_filter->addWidget(waining_level_combox);
h_filter->addWidget(waining_time_combox);
waining_listwidget=new QListWidget();
v_filter->addWidget(waining_listwidget);
waining_listwidget->addItem("警告界面");
waining_listwidget->addItem("luobo");
main_stackedwidget->addWidget(waining_widget);
}
void MainWindow::SetTaskMessageWidget()
{
task_widget=new QWidget();
task_widget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(task_widget, &QWidget::customContextMenuRequested, this, &MainWindow::showLogListContextMenu);
QHBoxLayout* task_hbox=new QHBoxLayout();
QPushButton* add_task_botton=new QPushButton("取消任务");
QPushButton* del_task_button=new QPushButton("恢复任务");
QPushButton* recover_task_botton=new QPushButton("设置任务");
task_hbox->addWidget(add_task_botton);
task_hbox->addWidget(del_task_button);
task_hbox->addWidget(recover_task_botton);
QListWidget* task_listwidget=new QListWidget();
task_listwidget->addItem("1");
task_listwidget->addItem("2");
task_listwidget->addItem("3");
QVBoxLayout* task_main_vbox=new QVBoxLayout(task_widget);
task_main_vbox->addWidget(task_listwidget);
task_main_vbox->addLayout(task_hbox);
main_stackedwidget->addWidget(task_widget);
}
void MainWindow::showLogListContextMenu(const QPoint& pos)
{
QMenu menu;
QAction* actionClear = menu.addAction("清空日志");
QAction* actionSave = menu.addAction("保存日志");
QAction* selectedAction = menu.exec(task_widget->mapToGlobal(pos));
if (selectedAction == actionClear)
{
//task_widget->clear();
}
else if (selectedAction == actionSave)
{
//QMessageBox::information(this, "保存日志", "日志已保存");
}
}
void MainWindow::check_waining_list()
{
if(waining_listwidget->count()!=0)
{
qDebug()<<"0";
}
else
{
qDebug()<<"1";
}
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QVBoxLayout>
#include<QHBoxLayout>
#include<QListWidget>
#include <QTableView>
#include <QStackedWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
QListWidget *m_loggerlList;
QListWidget *m_warningList;
QStackedWidget *main_stackedwidget;
QWidget *devecie_contrl_widget;
QWidget *task_widget;
QWidget *waining_widget;
QWidget *logger_widget;
QListWidget* waining_listwidget;
private:
void SetLoggerWidget();
void SetDeveieControlWidget();
void SetWainingWidegt();
void SetTaskMessageWidget();
void showLogListContextMenu(const QPoint& pos);
void check_waining_list();
};
#endif // MAINWINDOW_H
#ifndef CONTRLLIST_H
#define CONTRLLIST_H
#include <QWidget>
class contrlList : public QWidget
{
Q_OBJECT
public:
explicit contrlList(QWidget *parent = nullptr);
~contrlList();
protected:
void paintEvent(QPaintEvent* event) override;
private:
int m_grassMax;
int m_grass;
signals:
};
#endif // CONTRLLIST_H
#include "contrllist.h"
#include <QTimer>
#include <QPainter>
#include <QBrush>
#include <QDebug>
contrlList::contrlList(QWidget *parent)
: QWidget(parent), m_grass(0), m_grassMax(1040)
{
setMinimumSize(200, 50);
QTimer* timer = new QTimer(this);
connect(timer, &QTimer::timeout, [this, timer]() {
m_grass += 10; // 每次增加 1
if (m_grass > m_grassMax) m_grass = m_grassMax;
update();
});
timer->start(1000);
}
contrlList::~contrlList()
{
}
void contrlList::paintEvent(QPaintEvent* event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing); // 可选:抗锯齿
// 绘制灰色背景
painter.fillRect(rect(), Qt::lightGray);
// 计算绿色矩形宽度
int grassValue = 0;
if (m_grassMax > 0) {
grassValue = static_cast<int>((static_cast<double>(m_grass) / m_grassMax) * rect().width());
}
// 绘制绿色进度条
painter.fillRect(0, 0, grassValue, rect().height(), Qt::green);
// 绘制黑色边框
painter.setPen(QPen(Qt::black, 2));
painter.drawRect(rect());
// 调试输出
qDebug() << "Grass value:" << grassValue << "Width:" << rect().width();
}