#include "MenuBarUI.h" #include "ui_MenuBarUI.h" QTextBrowser *log_te; void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QString msgstr; switch (type) { case QtDebugMsg: msgstr = QString::asprintf("Debug: %s (%s:%u, %s)", qPrintable(msg), context.file, context.line, context.function); break; case QtInfoMsg: msgstr = QString::asprintf("Info: %s", qPrintable(msg)); break; case QtWarningMsg: msgstr = QString::asprintf("Warning: %s (%s:%u, %s)", qPrintable(msg), context.file, context.line, context.function); break; case QtCriticalMsg: msgstr = QString::asprintf("Critical: %s (%s:%u, %s)", qPrintable(msg), context.file, context.line, context.function); break; case QtFatalMsg: msgstr = QString::asprintf("Fatal: %s (%s:%u, %s)", qPrintable(msg), context.file, context.line, context.function); break; } log_te->append(msgstr); QTextCursor cursor=log_te->textCursor(); cursor.movePosition(QTextCursor::End); log_te->setTextCursor(cursor); } MenuBarUI::MenuBarUI(QWidget *parent) : QWidget(parent), ui(new Ui::MenuBarUI) { ui->setupUi(this); //load qss QFile file(":/qss/MenuBarUI.qss"); file.open(QFile::ReadOnly); QTextStream filetext(&file); QString stylesheet = filetext.readAll(); this->setStyleSheet(stylesheet); file.close(); //log_te = ui->textBrowser; //qInstallMessageHandler(myMessageOutput); MessageTimer = new QTimer(this); connect(MessageTimer,SIGNAL(timeout()), this,SLOT(MessageTimeOut())); showMessage(tr("Starting...\n"),5000); setPushButtonState(state::unSelected, state::unSelected, state::unSelected, state::Selected, state::unSelected); } MenuBarUI::~MenuBarUI() { if(MessageTimer) { if(MessageTimer->isActive()) { MessageTimer->stop(); } delete MessageTimer; } delete ui; } void MenuBarUI::setPushButtonState(uint8_t state1,uint8_t state2,uint8_t state3,uint8_t state4,uint8_t state5) { ui->pushButton_Setting->setProperty("state",state1); ui->pushButton_Setting->style()->unpolish(ui->pushButton_Setting); ui->pushButton_Setting->style()->polish(ui->pushButton_Setting); ui->pushButton_SelfTest->setProperty("state",state2); ui->pushButton_SelfTest->style()->unpolish(ui->pushButton_SelfTest); ui->pushButton_SelfTest->style()->polish(ui->pushButton_SelfTest); ui->pushButton_Mission->setProperty("state",state3); ui->pushButton_Mission->style()->unpolish(ui->pushButton_Mission); ui->pushButton_Mission->style()->polish(ui->pushButton_Mission); ui->pushButton_Flight->setProperty("state",state4); ui->pushButton_Flight->style()->unpolish(ui->pushButton_Flight); ui->pushButton_Flight->style()->polish(ui->pushButton_Flight); ui->pushButton_Info->setProperty("state",state5); ui->pushButton_Info->style()->unpolish(ui->pushButton_Info); ui->pushButton_Info->style()->polish(ui->pushButton_Info); } void MenuBarUI::onClicked() { qDebug() << "click"; } void MenuBarUI::on_pushButton_Setting_clicked() { setPushButtonState(state::Selected, state::unSelected, state::unSelected, state::unSelected, state::unSelected); update(); emit IndexChanged(0); } void MenuBarUI::on_pushButton_SelfTest_clicked() { setPushButtonState(state::unSelected, state::Selected, state::unSelected, state::unSelected, state::unSelected); update(); emit IndexChanged(1); } void MenuBarUI::on_pushButton_Mission_clicked() { setPushButtonState(state::unSelected, state::unSelected, state::Selected, state::unSelected, state::unSelected); update(); emit IndexChanged(2); } void MenuBarUI::on_pushButton_Flight_clicked() { setPushButtonState(state::unSelected, state::unSelected, state::unSelected, state::Selected, state::unSelected); update(); emit IndexChanged(3); } void MenuBarUI::on_pushButton_Info_clicked() { setPushButtonState(state::unSelected, state::unSelected, state::unSelected, state::unSelected, state::Selected); update(); emit IndexChanged(4); } void MenuBarUI::showMessage(const QString &message, int TimeOut) { ui->label_Status->setText(message); //这句:如果小于0,那么不生成定时器,减少内存开支,因为小于0时,定时器永远不会触发 if(TimeOut > 0) { if(MessageTimer->isActive()) { MessageTimer->stop(); } MessageTimer->start(TimeOut); } else { if(MessageTimer->isActive()) { MessageTimer->stop(); } } } void MenuBarUI::clearMessage() { ui->label_Status->clear(); } void MenuBarUI::MessageTimeOut(void) { if(MessageTimer->isActive()) { MessageTimer->stop(); } clearMessage(); }