22 return qApp->primaryScreen()->geometry().width();
27 return qApp->primaryScreen()->geometry().height();
31 QString
name = qApp->applicationFilePath();
32 QStringList list =
name.split(
"/");
33 name = list.at(list.count() - 1).split(
".").at(0);
39 return "/sdcard/Android/lys";
42 return qApp->applicationDirPath();
47 QString strDir = dirName;
49 if (!strDir.startsWith(
"/") && !strDir.contains(
":/")) {
61 QString fileName = QString(
"%1/%2/%3_runinfo_%4.txt")
65 .arg(QDate::currentDate().year());
69 QTextStream stream(&file);
83 QString qssFile =
":/qss/blue.css";
86 qssFile =
":/qss/silvery.css";
88 qssFile =
":/qss/blue.css";
90 qssFile =
":/qss/lightblue.css";
92 qssFile =
":/qss/darkblue.css";
94 qssFile =
":/qss/gray.css";
96 qssFile =
":/qss/lightgray.css";
98 qssFile =
":/qss/darkgray.css";
100 qssFile =
":/qss/black.css";
102 qssFile =
":/qss/lightblack.css";
104 qssFile =
":/qss/darkblack.css";
106 qssFile =
":/qss/psblack.css";
108 qssFile =
":/qss/flatblack.css";
110 qssFile =
":/qss/flatwhite.css";
119 if (file.open(QFile::ReadOnly)) {
120 QString qss = QLatin1String(file.readAll());
121 QString paletteColor = qss.mid(20, 7);
122 qApp->setPalette(QPalette(QColor(paletteColor)));
123 qApp->setStyleSheet(qss);
129 QString &paletteColor,
130 QString &textColor) {
133 if (file.open(QFile::ReadOnly)) {
134 QString qss = QLatin1String(file.readAll());
135 paletteColor = qss.mid(20, 7);
136 textColor = qss.mid(49, 7);
137 qApp->setPalette(QPalette(QColor(paletteColor)));
138 qApp->setStyleSheet(qss);
146 QString &borderColor,
147 QString &normalColorStart,
148 QString &normalColorEnd,
149 QString &darkColorStart,
150 QString &darkColorEnd,
151 QString &highColor) {
154 if (file.open(QFile::ReadOnly)) {
155 QString qss = QLatin1String(file.readAll());
156 getQssColor(qss, textColor, panelColor, borderColor, normalColorStart,
157 normalColorEnd, darkColorStart, darkColorEnd, highColor);
158 qApp->setPalette(QPalette(QColor(panelColor)));
159 qApp->setStyleSheet(qss);
167 QString &borderColor,
168 QString &normalColorStart,
169 QString &normalColorEnd,
170 QString &darkColorStart,
171 QString &darkColorEnd,
172 QString &highColor) {
175 QString flagTextColor =
"TextColor:";
176 int indexTextColor = str.indexOf(flagTextColor);
178 if (indexTextColor >= 0) {
179 textColor = str.mid(indexTextColor + flagTextColor.length(), 7);
182 QString flagPanelColor =
"PanelColor:";
183 int indexPanelColor = str.indexOf(flagPanelColor);
185 if (indexPanelColor >= 0) {
186 panelColor = str.mid(indexPanelColor + flagPanelColor.length(), 7);
189 QString flagBorderColor =
"BorderColor:";
190 int indexBorderColor = str.indexOf(flagBorderColor);
192 if (indexBorderColor >= 0) {
193 borderColor = str.mid(indexBorderColor + flagBorderColor.length(), 7);
196 QString flagNormalColorStart =
"NormalColorStart:";
197 int indexNormalColorStart = str.indexOf(flagNormalColorStart);
199 if (indexNormalColorStart >= 0) {
200 normalColorStart = str.mid(
201 indexNormalColorStart + flagNormalColorStart.length(), 7);
204 QString flagNormalColorEnd =
"NormalColorEnd:";
205 int indexNormalColorEnd = str.indexOf(flagNormalColorEnd);
207 if (indexNormalColorEnd >= 0) {
209 str.mid(indexNormalColorEnd + flagNormalColorEnd.length(), 7);
212 QString flagDarkColorStart =
"DarkColorStart:";
213 int indexDarkColorStart = str.indexOf(flagDarkColorStart);
215 if (indexDarkColorStart >= 0) {
217 str.mid(indexDarkColorStart + flagDarkColorStart.length(), 7);
220 QString flagDarkColorEnd =
"DarkColorEnd:";
221 int indexDarkColorEnd = str.indexOf(flagDarkColorEnd);
223 if (indexDarkColorEnd >= 0) {
225 str.mid(indexDarkColorEnd + flagDarkColorEnd.length(), 7);
228 QString flagHighColor =
"HighColor:";
229 int indexHighColor = str.indexOf(flagHighColor);
231 if (indexHighColor >= 0) {
232 highColor = str.mid(indexHighColor + flagHighColor.length(), 7);
237 int frmX = frm->width();
238 int frmY = frm->height();
240 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
244 int deskWidth = qApp->primaryScreen()->geometry().width();
246 int deskHeight = qApp->primaryScreen()->geometry().height();
248 frm->move(movePoint);
252 QTranslator *translator =
new QTranslator(qApp);
253 translator->load(qmFile);
254 qApp->installTranslator(translator);
258 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
262 #elif (QT_VERSION <= QT_VERSION_CHECK(5, 0, 0))
268 QTextCodec::setCodecForLocale(codec);
269 QTextCodec::setCodecForCStrings(codec);
270 QTextCodec::setCodecForTr(codec);
273 QTextCodec::setCodecForLocale(codec);
278 QTime dieTime = QTime::currentTime().addMSecs(sec);
280 while (QTime::currentTime() < dieTime) {
281 QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
286 const QString &month,
290 const QString &sec) {
295 p.write(QString(
"date %1-%2-%3\n")
300 p.closeWriteChannel();
301 p.waitForFinished(1000);
305 p.write(QString(
"time %1:%2:%3.00\n")
310 p.closeWriteChannel();
311 p.waitForFinished(1000);
314 QString cmd = QString(
"date %1%2%3%4%5.%6")
321 if (system(cmd.toLatin1()) > 0) {
323 if (system(
"hwclock -w") > 0) {
329 const QString &strPath,
334 "MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
335 QSettings::NativeFormat);
338 reg.setValue(strName, strPath);
340 reg.setValue(strName,
"");
348 "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?"
350 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
351 QRegularExpressionMatch match = RegExp.match(ip);
352 return match.hasMatch();
354 return RegExp.exactMatch(ip);
361 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
362 QRegularExpressionMatch match = RegExp.match(mac);
363 return match.hasMatch();
365 return RegExp.exactMatch(mac);
370 if (tel.length() != 11) {
374 if (!tel.startsWith(
"13") && !tel.startsWith(
"14") &&
375 !tel.startsWith(
"15") && !tel.startsWith(
"18")) {
383 if (!email.contains(
"@") || !email.contains(
".com")) {
392 return strHex.toInt(&ok, 16);
397 return strDecimal.toInt(&ok, 10);
402 return strBin.toInt(&ok, 2);
407 QString bin = QString::number(decimal, 2);
408 uchar len = bin.length();
411 for (
int i = 0; i < 8 - len; i++) {
420 QString bin = QString::number(decimal, 2);
421 uchar len = bin.length();
424 for (
int i = 0; i < 8 - len; i++) {
433 QString bin = QString::number(decimal, 2);
434 uchar len = bin.length();
437 for (
int i = 0; i < 16 - len; i++) {
446 QString temp = QString::number(decimal, 16);
448 if (temp.length() == 1) {
466 int i = data.at(3) & 0x000000FF;
467 i |= ((data.at(2) << 8) & 0x0000FF00);
468 i |= ((data.at(1) << 16) & 0x00FF0000);
469 i |= ((data.at(0) << 24) & 0xFF000000);
482 int i = data.at(1) & 0x000000FF;
483 i |= ((data.at(0) << 8) & 0x0000FF00);
488 QByteArray data = str.toLatin1();
489 int size = data.size();
491 for (
int i = 0; i <
size; i++) {
492 data[i] = data.at(i) ^ key;
495 return QLatin1String(data);
499 int len = data.length();
502 for (
int i = 0; i < len; i++) {
510 int len = data.length();
513 for (
uchar i = 0; i < len; i++) {
522 int len = data.size();
524 for (
int i = 0; i < len; i++) {
529 temp += QString(
"\\NUL");
530 }
else if (0x01 == b) {
531 temp += QString(
"\\SOH");
532 }
else if (0x02 == b) {
533 temp += QString(
"\\STX");
534 }
else if (0x03 == b) {
535 temp += QString(
"\\ETX");
536 }
else if (0x04 == b) {
537 temp += QString(
"\\EOT");
538 }
else if (0x05 == b) {
539 temp += QString(
"\\ENQ");
540 }
else if (0x06 == b) {
541 temp += QString(
"\\ACK");
542 }
else if (0x07 == b) {
543 temp += QString(
"\\BEL");
544 }
else if (0x08 == b) {
545 temp += QString(
"\\BS");
546 }
else if (0x09 == b) {
547 temp += QString(
"\\HT");
548 }
else if (0x0A == b) {
549 temp += QString(
"\\LF");
550 }
else if (0x0B == b) {
551 temp += QString(
"\\VT");
552 }
else if (0x0C == b) {
553 temp += QString(
"\\FF");
554 }
else if (0x0D == b) {
555 temp += QString(
"\\CR");
556 }
else if (0x0E == b) {
557 temp += QString(
"\\SO");
558 }
else if (0x0F == b) {
559 temp += QString(
"\\SI");
560 }
else if (0x10 == b) {
561 temp += QString(
"\\DLE");
562 }
else if (0x11 == b) {
563 temp += QString(
"\\DC1");
564 }
else if (0x12 == b) {
565 temp += QString(
"\\DC2");
566 }
else if (0x13 == b) {
567 temp += QString(
"\\DC3");
568 }
else if (0x14 == b) {
569 temp += QString(
"\\DC4");
570 }
else if (0x15 == b) {
571 temp += QString(
"\\NAK");
572 }
else if (0x16 == b) {
573 temp += QString(
"\\SYN");
574 }
else if (0x17 == b) {
575 temp += QString(
"\\ETB");
576 }
else if (0x18 == b) {
577 temp += QString(
"\\CAN");
578 }
else if (0x19 == b) {
579 temp += QString(
"\\EM");
580 }
else if (0x1A == b) {
581 temp += QString(
"\\SUB");
582 }
else if (0x1B == b) {
583 temp += QString(
"\\ESC");
584 }
else if (0x1C == b) {
585 temp += QString(
"\\FS");
586 }
else if (0x1D == b) {
587 temp += QString(
"\\GS");
588 }
else if (0x1E == b) {
589 temp += QString(
"\\RS");
590 }
else if (0x1F == b) {
591 temp += QString(
"\\US");
592 }
else if (0x7F == b) {
593 temp += QString(
"\\x7F");
594 }
else if (0x5C == b) {
595 temp += QString(
"\\x5C");
596 }
else if (0x20 >= b) {
599 temp += QString(
"%1").arg(b);
603 return temp.trimmed();
608 int hexdata, lowhexdata;
610 int len = str.length();
611 senddata.resize(len / 2);
614 for (
int i = 0; i < len;) {
615 hstr = str.at(i).toLatin1();
628 lstr = str.at(i).toLatin1();
632 if ((hexdata == 16) || (lowhexdata == 16)) {
635 hexdata = hexdata * 16 + lowhexdata;
639 senddata[hexdatalen] = (char)hexdata;
643 senddata.resize(hexdatalen);
648 if ((ch >=
'0') && (ch <=
'9')) {
650 }
else if ((ch >=
'A') && (ch <=
'F')) {
651 return ch -
'A' + 10;
652 }
else if ((ch >=
'a') && (ch <=
'f')) {
653 return ch -
'a' + 10;
661 int len = str.length();
665 for (
int i = 0; i < len; i++) {
668 if (letter ==
"\\") {
670 letter = str.mid(i, 1);
678 }
else if (letter ==
"N") {
687 buffer.append((
char)0x00);
690 }
else if (hex ==
"A") {
699 }
else if (letter ==
"S") {
715 }
else if (hex ==
"T") {
723 }
else if (hex ==
"I") {
726 }
else if (hex ==
"Y") {
734 }
else if (hex ==
"U") {
743 }
else if (letter ==
"E") {
754 }
else if (hex ==
"B") {
758 }
else if (hex ==
"O") {
766 }
else if (hex ==
"N") {
774 }
else if (hex ==
"M") {
777 }
else if (hex ==
"S") {
786 }
else if (letter ==
"A") {
799 }
else if (letter ==
"B") {
811 }
else if (hex ==
"S") {
815 }
else if (letter ==
"C") {
822 }
else if (hex ==
"A") {
831 }
else if (letter ==
"D") {
843 }
else if (hex ==
"C") {
850 }
else if (hex ==
"2") {
853 }
else if (hex ==
"3") {
856 }
else if (hex ==
"4") {
861 }
else if (letter ==
"F") {
868 }
else if (hex ==
"S") {
872 }
else if (letter ==
"H") {
880 }
else if (letter ==
"L") {
888 }
else if (letter ==
"G") {
896 }
else if (letter ==
"R") {
904 }
else if (letter ==
"U") {
912 }
else if (letter ==
"V") {
920 }
else if (letter ==
"\\") {
927 buffer.append(letter.toLatin1());
932 buffer.append(str.mid(i, 1).toLatin1());
940 QString hex = data.toHex();
942 for (
int i = 0; i < hex.length(); i = i + 2) {
943 temp += hex.mid(i, 2) +
" ";
946 return temp.trimmed().toUpper();
950 return QFileDialog::getOpenFileName(0, QStringLiteral(
"Select File"),
955 return QFileDialog::getOpenFileNames(0, QStringLiteral(
"Select File"),
960 return QFileDialog::getExistingDirectory();
965 QFileInfo fileInfo(strFilePath);
966 return fileInfo.fileName();
970 QStringList fileList;
971 QString strFolder = QFileDialog::getExistingDirectory();
973 if (!strFolder.length() == 0) {
974 QDir myFolder(strFolder);
976 if (myFolder.exists()) {
977 fileList = myFolder.entryList(filter);
985 QDir tempFolder(strFolder);
986 return tempFolder.exists();
990 QFile tempFile(strFile);
991 return tempFile.exists();
998 ok = QFile::setPermissions(targetFile, QFile::WriteOwner);
1005 if (!dir.exists()) {
1009 dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot);
1010 QFileInfoList fileList = dir.entryInfoList();
1012 foreach (QFileInfo fi, fileList) {
1014 fi.dir().remove(fi.fileName());
1017 dir.rmdir(fi.absoluteFilePath());
1099 const QString &title,
1102 QString defaultValue,
1111 this->initControl();
1137 void QUIWidget::initControl() {
1138 this->setObjectName(QString::fromUtf8(
"QUIWidget"));
1139 this->resize(900, 750);
1140 verticalLayout1 =
new QVBoxLayout(
this);
1141 verticalLayout1->setSpacing(0);
1142 verticalLayout1->setContentsMargins(11, 11, 11, 11);
1143 verticalLayout1->setObjectName(QString::fromUtf8(
"verticalLayout1"));
1144 verticalLayout1->setContentsMargins(1, 1, 1, 1);
1145 widgetMain =
new QWidget(
this);
1146 widgetMain->setObjectName(QString::fromUtf8(
"widgetMain"));
1147 widgetMain->setStyleSheet(QString::fromUtf8(
""));
1148 verticalLayout2 =
new QVBoxLayout(widgetMain);
1149 verticalLayout2->setSpacing(0);
1150 verticalLayout2->setContentsMargins(11, 11, 11, 11);
1151 verticalLayout2->setObjectName(QString::fromUtf8(
"verticalLayout2"));
1152 verticalLayout2->setContentsMargins(0, 0, 0, 0);
1153 widgetTitle =
new QWidget(widgetMain);
1154 widgetTitle->setObjectName(QString::fromUtf8(
"widgetTitle"));
1155 QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
1156 sizePolicy.setHorizontalStretch(0);
1157 sizePolicy.setVerticalStretch(0);
1158 sizePolicy.setHeightForWidth(widgetTitle->sizePolicy().hasHeightForWidth());
1159 widgetTitle->setSizePolicy(sizePolicy);
1160 widgetTitle->setMinimumSize(QSize(0, 30));
1161 horizontalLayout4 =
new QHBoxLayout(widgetTitle);
1162 horizontalLayout4->setSpacing(0);
1163 horizontalLayout4->setContentsMargins(11, 11, 11, 11);
1164 horizontalLayout4->setObjectName(QString::fromUtf8(
"horizontalLayout4"));
1165 horizontalLayout4->setContentsMargins(0, 0, 0, 0);
1166 labIco =
new QLabel(widgetTitle);
1167 labIco->setObjectName(QString::fromUtf8(
"labIco"));
1169 sizePolicy1.setHorizontalStretch(0);
1170 sizePolicy1.setVerticalStretch(0);
1171 sizePolicy1.setHeightForWidth(labIco->sizePolicy().hasHeightForWidth());
1172 labIco->setSizePolicy(sizePolicy1);
1173 labIco->setMinimumSize(QSize(30, 0));
1174 labIco->setAlignment(Qt::AlignCenter);
1176 horizontalLayout4->addWidget(labIco);
1178 labTitle =
new QLabel(widgetTitle);
1179 labTitle->setObjectName(QString::fromUtf8(
"labTitle"));
1180 QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Preferred);
1181 sizePolicy2.setHorizontalStretch(0);
1182 sizePolicy2.setVerticalStretch(0);
1183 sizePolicy2.setHeightForWidth(labTitle->sizePolicy().hasHeightForWidth());
1184 labTitle->setSizePolicy(sizePolicy2);
1185 labTitle->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter);
1187 horizontalLayout4->addWidget(labTitle);
1189 widgetMenu =
new QWidget(widgetTitle);
1190 widgetMenu->setObjectName(QString::fromUtf8(
"widgetMenu"));
1191 sizePolicy1.setHeightForWidth(widgetMenu->sizePolicy().hasHeightForWidth());
1192 widgetMenu->setSizePolicy(sizePolicy1);
1193 horizontalLayout =
new QHBoxLayout(widgetMenu);
1194 horizontalLayout->setSpacing(0);
1195 horizontalLayout->setContentsMargins(11, 11, 11, 11);
1196 horizontalLayout->setObjectName(QString::fromUtf8(
"horizontalLayout"));
1197 horizontalLayout->setContentsMargins(0, 0, 0, 0);
1198 btnMenu =
new QToolButton(widgetMenu);
1199 btnMenu->setObjectName(QString::fromUtf8(
"btnMenu"));
1200 QSizePolicy sizePolicy3(QSizePolicy::Fixed, QSizePolicy::Expanding);
1201 sizePolicy3.setHorizontalStretch(0);
1202 sizePolicy3.setVerticalStretch(0);
1203 sizePolicy3.setHeightForWidth(btnMenu->sizePolicy().hasHeightForWidth());
1204 btnMenu->setSizePolicy(sizePolicy3);
1205 btnMenu->setMinimumSize(QSize(30, 0));
1206 btnMenu->setMaximumSize(QSize(30, 16777215));
1207 btnMenu->setFocusPolicy(Qt::NoFocus);
1208 btnMenu->setPopupMode(QToolButton::InstantPopup);
1210 horizontalLayout->addWidget(btnMenu);
1212 btnMenu_Min =
new QPushButton(widgetMenu);
1213 btnMenu_Min->setObjectName(QString::fromUtf8(
"btnMenu_Min"));
1215 sizePolicy4.setHorizontalStretch(0);
1216 sizePolicy4.setVerticalStretch(0);
1217 sizePolicy4.setHeightForWidth(
1218 btnMenu_Min->sizePolicy().hasHeightForWidth());
1219 btnMenu_Min->setSizePolicy(sizePolicy4);
1220 btnMenu_Min->setMinimumSize(QSize(30, 0));
1221 btnMenu_Min->setMaximumSize(QSize(30, 16777215));
1222 btnMenu_Min->setCursor(QCursor(Qt::ArrowCursor));
1223 btnMenu_Min->setFocusPolicy(Qt::NoFocus);
1225 horizontalLayout->addWidget(btnMenu_Min);
1227 btnMenu_Max =
new QPushButton(widgetMenu);
1228 btnMenu_Max->setObjectName(QString::fromUtf8(
"btnMenu_Max"));
1229 sizePolicy3.setHeightForWidth(
1230 btnMenu_Max->sizePolicy().hasHeightForWidth());
1231 btnMenu_Max->setSizePolicy(sizePolicy3);
1232 btnMenu_Max->setMinimumSize(QSize(30, 0));
1233 btnMenu_Max->setMaximumSize(QSize(30, 16777215));
1234 btnMenu_Max->setCursor(QCursor(Qt::ArrowCursor));
1235 btnMenu_Max->setFocusPolicy(Qt::NoFocus);
1237 horizontalLayout->addWidget(btnMenu_Max);
1239 btnMenu_Close =
new QPushButton(widgetMenu);
1240 btnMenu_Close->setObjectName(QString::fromUtf8(
"btnMenu_Close"));
1241 sizePolicy3.setHeightForWidth(
1242 btnMenu_Close->sizePolicy().hasHeightForWidth());
1243 btnMenu_Close->setSizePolicy(sizePolicy3);
1244 btnMenu_Close->setMinimumSize(QSize(30, 0));
1245 btnMenu_Close->setMaximumSize(QSize(30, 16777215));
1246 btnMenu_Close->setCursor(QCursor(Qt::ArrowCursor));
1247 btnMenu_Close->setFocusPolicy(Qt::NoFocus);
1249 horizontalLayout->addWidget(btnMenu_Close);
1250 horizontalLayout4->addWidget(widgetMenu);
1251 verticalLayout2->addWidget(widgetTitle);
1253 widget =
new QWidget(widgetMain);
1254 widget->setObjectName(QString::fromUtf8(
"widget"));
1255 verticalLayout3 =
new QVBoxLayout(widget);
1256 verticalLayout3->setSpacing(0);
1257 verticalLayout3->setContentsMargins(11, 11, 11, 11);
1258 verticalLayout3->setObjectName(QString::fromUtf8(
"verticalLayout3"));
1259 verticalLayout3->setContentsMargins(0, 0, 0, 0);
1261 verticalLayout2->addWidget(widget);
1262 verticalLayout1->addWidget(widgetMain);
1264 connect(this->btnMenu_Min, SIGNAL(clicked(
bool)),
this,
1265 SLOT(on_btnMenu_Min_clicked()));
1266 connect(this->btnMenu_Max, SIGNAL(clicked(
bool)),
this,
1267 SLOT(on_btnMenu_Max_clicked()));
1268 connect(this->btnMenu_Close, SIGNAL(clicked(
bool)),
this,
1269 SLOT(on_btnMenu_Close_clicked()));
1272 void QUIWidget::initForm() {
1281 this->location = this->geometry();
1282 this->setProperty(
"form",
true);
1283 this->widgetTitle->setProperty(
"form",
"title");
1285 this->setWindowFlags((Qt::FramelessWindowHint | Qt::WindowSystemMenuHint |
1286 Qt::WindowMinMaxButtonsHint));
1290 alignment = Qt::AlignLeft | Qt::AlignVCenter;
1292 mainWidget =
nullptr;
1297 this->installEventFilter(
this);
1298 this->widgetTitle->installEventFilter(
this);
1302 name << QStringLiteral(
"Silvery") << QStringLiteral(
"Blue")
1303 << QStringLiteral(
"Light Blue") << QStringLiteral(
"Dark Blue")
1304 << QStringLiteral(
"Gray") << QStringLiteral(
"Light Gray")
1305 << QStringLiteral(
"Dark Gray") << QStringLiteral(
"Black")
1306 << QStringLiteral(
"Light Black") << QStringLiteral(
"Dark Black")
1307 << QStringLiteral(
"PS Black") << QStringLiteral(
"Flat Black")
1308 << QStringLiteral(
"Flat White");
1310 foreach (QString str,
name) {
1311 QAction *action =
new QAction(str,
this);
1312 this->btnMenu->addAction(action);
1313 connect(action, SIGNAL(triggered(
bool)),
this, SLOT(changeStyle()));
1318 restoreWinAction =
new QAction(tr(
"restore(&R)"),
this);
1319 quitAction =
new QAction(tr(
"exit(&Q)"),
this);
1322 connect(restoreWinAction, SIGNAL(triggered(
bool)),
this,
1323 SLOT(showWindow()));
1326 connect(quitAction, SIGNAL(triggered(
bool)), qApp, SLOT(quit()));
1330 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
1331 trayMenu =
new QMenu(
nullptr);
1333 trayMenu =
new QMenu((QWidget *)QApplication::desktop());
1335 trayMenu->addAction(restoreWinAction);
1338 trayMenu->addSeparator();
1339 trayMenu->addAction(quitAction);
1342 if (!QSystemTrayIcon::isSystemTrayAvailable()) {
1347 m_systemTray =
new QSystemTrayIcon(
this);
1350 m_systemTray->showMessage(QStringLiteral(
"Tray"),
1351 QStringLiteral(
"Tray Management"),
1352 QSystemTrayIcon::Information, 10000);
1353 m_systemTray->setContextMenu(trayMenu);
1354 m_systemTray->show();
1356 connect(m_systemTray, &QSystemTrayIcon::activated,
this,
1357 &QUIWidget::activeTray);
1359 connect(m_systemTray, &QSystemTrayIcon::messageClicked,
this,
1360 &QUIWidget::showWindow);
1363 void QUIWidget::activeTray(QSystemTrayIcon::ActivationReason reason) {
1368 case QSystemTrayIcon::DoubleClick:
1372 m_systemTray->showMessage(
1374 "There is a new message!",
1375 QSystemTrayIcon::MessageIcon::Information,
1382 void QUIWidget::changeStyle() {
1383 QAction *act = (QAction *)sender();
1384 QString
name = act->text();
1385 QString qssFile =
":/qss/blue.css";
1387 if (
name == QStringLiteral(
"Silvery")) {
1388 qssFile =
":/qss/silvery.css";
1390 }
else if (
name == QStringLiteral(
"Blue")) {
1391 qssFile =
":/qss/blue.css";
1393 }
else if (
name == QStringLiteral(
"Light Blue")) {
1394 qssFile =
":/qss/lightblue.css";
1396 }
else if (
name == QStringLiteral(
"Dark Blue")) {
1397 qssFile =
":/qss/darkblue.css";
1399 }
else if (
name == QStringLiteral(
"Gray")) {
1400 qssFile =
":/qss/gray.css";
1402 }
else if (
name == QStringLiteral(
"Light Gray")) {
1403 qssFile =
":/qss/lightgray.css";
1405 }
else if (
name == QStringLiteral(
"Dark Gray")) {
1406 qssFile =
":/qss/darkgray.css";
1408 }
else if (
name == QStringLiteral(
"Black")) {
1409 qssFile =
":/qss/black.css";
1411 }
else if (
name == QStringLiteral(
"Light Black")) {
1412 qssFile =
":/qss/lightblack.css";
1414 }
else if (
name == QStringLiteral(
"Dark Black")) {
1415 qssFile =
":/qss/darkblack.css";
1417 }
else if (
name == QStringLiteral(
"PS Black")) {
1418 qssFile =
":/qss/psblack.css";
1420 }
else if (
name == QStringLiteral(
"Flat Black")) {
1421 qssFile =
":/qss/flatblack.css";
1423 }
else if (
name == QStringLiteral(
"Flat White")) {
1424 qssFile =
":/qss/flatwhite.css";
1431 emit changeStyle(qssFile);
1463 if (this->mainWidget) {
1464 this->mainWidget->setWindowIcon(QIcon(icon));
1469 const QString &file,
1470 const QSize &
size) {
1471 QPixmap pix = QPixmap(file);
1473 pix = pix.scaled(
size, Qt::KeepAspectRatio);
1476 this->labIco->setPixmap(pix);
1478 this->btnMenu->setIcon(QIcon(file));
1480 this->btnMenu_Min->setIcon(QIcon(file));
1482 this->btnMenu_Max->setIcon(QIcon(file));
1484 this->btnMenu_Close->setIcon(QIcon(file));
1490 this->labIco->setVisible(visible);
1492 this->btnMenu->setVisible(visible);
1494 this->btnMenu_Min->setVisible(visible);
1496 this->btnMenu_Max->setVisible(visible);
1498 this->btnMenu_Close->setVisible(visible);
1503 this->btnMenu->setVisible(
false);
1504 this->btnMenu_Min->setVisible(
false);
1505 this->btnMenu_Max->setVisible(
false);
1509 this->widgetTitle->setFixedHeight(
height);
1513 this->labIco->setFixedWidth(
width);
1514 this->btnMenu->setFixedWidth(
width);
1515 this->btnMenu_Min->setFixedWidth(
width);
1516 this->btnMenu_Max->setFixedWidth(
width);
1517 this->btnMenu_Close->setFixedWidth(
width);
1521 if (this->title !=
title) {
1522 this->title =
title;
1523 this->labTitle->setText(
title);
1524 this->setWindowTitle(this->labTitle->text());
1531 this->labTitle->setAlignment(
alignment);
1536 if (this->minHide != minHide) {
1537 this->minHide = minHide;
1543 if (this->mainWidget == 0) {
1545 this->widget->layout()->addWidget(mainWidget);
1547 resize(mainWidget->width(),
1548 mainWidget->height() + this->widgetTitle->height());
1550 this->mainWidget = mainWidget;
1554 void QUIWidget::showEvent(QShowEvent *
event) {
1555 QDialog::showEvent(
event);
1557 if (this->mainWidget) {
1565 if (geometry.isValid()) {
1566 this->mainWidget->restoreGeometry(geometry.toByteArray());
1567 this->mainWidget->restoreState(
1575 if (!geometry.isValid()) {
1579 if (isFullScreen()) {
1585 void QUIWidget::closeEvent(QCloseEvent *
event) {
1586 if (this->mainWidget) {
1587 if ((this->mainWidget->
db() &&
1590 QMessageBox::question(
this,
"Quit",
1591 "Are you sure you want to quit?",
1593 QMessageBox::Cancel) != QMessageBox::Cancel) {
1605 void QUIWidget::moveEvent(QMoveEvent *
event) {
1606 QDialog::moveEvent(
event);
1608 if (this->mainWidget) {
1613 void QUIWidget::resizeEvent(QResizeEvent *
event) {
1614 QDialog::resizeEvent(
event);
1616 if (this->mainWidget) {
1621 void QUIWidget::keyPressEvent(QKeyEvent *
event) {
1622 switch (
event->key()) {
1623 case Qt::Key_Escape: {
1624 if (this->mainWidget) {
1632 QDialog::keyPressEvent(
event);
1636 bool QUIWidget::eventFilter(QObject *obj, QEvent *evt) {
1637 switch (evt->type()) {
1640 if (this->mainWidget) {
1649 static QPoint mousePoint;
1650 static bool mousePressed =
false;
1652 QMouseEvent *
event =
static_cast<QMouseEvent *
>(evt);
1653 if (
event->type() == QEvent::MouseButtonPress) {
1654 if (
event->button() == Qt::LeftButton) {
1655 mousePressed =
true;
1656 mousePoint =
event->globalPos() - this->pos();
1659 }
else if (
event->type() == QEvent::MouseButtonRelease) {
1660 mousePressed =
false;
1662 }
else if (
event->type() == QEvent::MouseMove) {
1663 if (!max && mousePressed && (
event->buttons() && Qt::LeftButton)) {
1664 this->move(
event->globalPos() - mousePoint);
1667 }
else if (
event->type() == QEvent::MouseButtonDblClick) {
1669 if (this->btnMenu_Max->isVisible()) {
1670 this->on_btnMenu_Max_clicked();
1675 QObject::eventFilter(obj, evt);
1677 return QWidget::eventFilter(obj, evt);
1680 void QUIWidget::on_btnMenu_Min_clicked() {
1688 void QUIWidget::on_btnMenu_Max_clicked() {
1690 this->setGeometry(location);
1693 location = this->geometry();
1695 this->setGeometry(qApp->primaryScreen()->geometry());
1702 void QUIWidget::on_btnMenu_Close_clicked() {
1709 this->initControl();
1715 void QUIMessageBox::initControl() {
1716 this->setObjectName(QString::fromUtf8(
"QUIMessageBox"));
1719 this->resize(300, 160);
1721 this->resize(280, 150);
1724 verticalLayout1 =
new QVBoxLayout(
this);
1725 verticalLayout1->setSpacing(0);
1726 verticalLayout1->setObjectName(QString::fromUtf8(
"verticalLayout1"));
1727 verticalLayout1->setContentsMargins(1, 1, 1, 1);
1728 widgetTitle =
new QWidget(
this);
1729 widgetTitle->setObjectName(QString::fromUtf8(
"widgetTitle"));
1730 QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
1731 sizePolicy.setHorizontalStretch(0);
1732 sizePolicy.setVerticalStretch(0);
1733 sizePolicy.setHeightForWidth(widgetTitle->sizePolicy().hasHeightForWidth());
1734 widgetTitle->setSizePolicy(sizePolicy);
1735 widgetTitle->setMinimumSize(QSize(0, 30));
1736 horizontalLayout3 =
new QHBoxLayout(widgetTitle);
1737 horizontalLayout3->setSpacing(0);
1738 horizontalLayout3->setObjectName(QString::fromUtf8(
"horizontalLayout3"));
1739 horizontalLayout3->setContentsMargins(0, 0, 0, 0);
1740 labIco =
new QLabel(widgetTitle);
1741 labIco->setObjectName(QString::fromUtf8(
"labIco"));
1743 sizePolicy1.setHorizontalStretch(0);
1744 sizePolicy1.setVerticalStretch(0);
1745 sizePolicy1.setHeightForWidth(labIco->sizePolicy().hasHeightForWidth());
1746 labIco->setSizePolicy(sizePolicy1);
1747 labIco->setMinimumSize(QSize(30, 0));
1748 labIco->setAlignment(Qt::AlignCenter);
1750 horizontalLayout3->addWidget(labIco);
1752 labTitle =
new QLabel(widgetTitle);
1753 labTitle->setObjectName(QString::fromUtf8(
"labTitle"));
1754 labTitle->setStyleSheet(QString::fromUtf8(
""));
1755 labTitle->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter);
1757 horizontalLayout3->addWidget(labTitle);
1759 labTime =
new QLabel(widgetTitle);
1760 labTime->setObjectName(QString::fromUtf8(
"labTime"));
1761 QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Preferred);
1762 sizePolicy2.setHorizontalStretch(0);
1763 sizePolicy2.setVerticalStretch(0);
1764 sizePolicy2.setHeightForWidth(labTime->sizePolicy().hasHeightForWidth());
1765 labTime->setSizePolicy(sizePolicy2);
1766 labTime->setAlignment(Qt::AlignCenter);
1768 horizontalLayout3->addWidget(labTime);
1770 widgetMenu =
new QWidget(widgetTitle);
1771 widgetMenu->setObjectName(QString::fromUtf8(
"widgetMenu"));
1772 sizePolicy1.setHeightForWidth(widgetMenu->sizePolicy().hasHeightForWidth());
1773 widgetMenu->setSizePolicy(sizePolicy1);
1774 horizontalLayout4 =
new QHBoxLayout(widgetMenu);
1775 horizontalLayout4->setSpacing(0);
1776 horizontalLayout4->setObjectName(QString::fromUtf8(
"horizontalLayout4"));
1777 horizontalLayout4->setContentsMargins(0, 0, 0, 0);
1778 btnMenu_Close =
new QPushButton(widgetMenu);
1779 btnMenu_Close->setObjectName(QString::fromUtf8(
"btnMenu_Close"));
1781 sizePolicy3.setHorizontalStretch(0);
1782 sizePolicy3.setVerticalStretch(0);
1783 sizePolicy3.setHeightForWidth(
1784 btnMenu_Close->sizePolicy().hasHeightForWidth());
1785 btnMenu_Close->setSizePolicy(sizePolicy3);
1786 btnMenu_Close->setMinimumSize(QSize(30, 0));
1787 btnMenu_Close->setMaximumSize(QSize(30, 16777215));
1788 btnMenu_Close->setCursor(QCursor(Qt::ArrowCursor));
1789 btnMenu_Close->setFocusPolicy(Qt::NoFocus);
1790 btnMenu_Close->setFlat(
true);
1792 horizontalLayout4->addWidget(btnMenu_Close);
1793 horizontalLayout3->addWidget(widgetMenu);
1794 verticalLayout1->addWidget(widgetTitle);
1796 widgetMain =
new QWidget(
this);
1797 widgetMain->setObjectName(QString::fromUtf8(
"widgetMain"));
1798 widgetMain->setStyleSheet(QString::fromUtf8(
""));
1799 verticalLayout2 =
new QVBoxLayout(widgetMain);
1800 verticalLayout2->setSpacing(5);
1801 verticalLayout2->setObjectName(QString::fromUtf8(
"verticalLayout2"));
1802 verticalLayout2->setContentsMargins(5, 5, 5, 5);
1803 frame =
new QFrame(widgetMain);
1804 frame->setObjectName(QString::fromUtf8(
"frame"));
1805 frame->setFrameShape(QFrame::Box);
1806 frame->setFrameShadow(QFrame::Sunken);
1807 verticalLayout4 =
new QVBoxLayout(frame);
1808 verticalLayout4->setObjectName(QString::fromUtf8(
"verticalLayout4"));
1809 verticalLayout4->setContentsMargins(-1, 9, -1, -1);
1810 horizontalLayout1 =
new QHBoxLayout();
1811 horizontalLayout1->setObjectName(QString::fromUtf8(
"horizontalLayout1"));
1812 labIcoMain =
new QLabel(frame);
1813 labIcoMain->setObjectName(QString::fromUtf8(
"labIcoMain"));
1814 labIcoMain->setMinimumSize(QSize(30, 30));
1815 labIcoMain->setMaximumSize(QSize(30, 30));
1816 labIcoMain->setStyleSheet(
1817 QString::fromUtf8(
"border-image: url(:/image/msg_info.png);"));
1819 horizontalLayout1->addWidget(labIcoMain);
1824 horizontalLayout1->addItem(horizontalSpacer1);
1826 labInfo =
new QLabel(frame);
1827 labInfo->setObjectName(QString::fromUtf8(
"labInfo"));
1828 QSizePolicy sizePolicy4(QSizePolicy::Expanding, QSizePolicy::Expanding);
1829 sizePolicy4.setHorizontalStretch(0);
1830 sizePolicy4.setVerticalStretch(0);
1831 sizePolicy4.setHeightForWidth(labInfo->sizePolicy().hasHeightForWidth());
1832 labInfo->setSizePolicy(sizePolicy4);
1833 labInfo->setMinimumSize(QSize(0, 33));
1834 labInfo->setScaledContents(
false);
1835 labInfo->setWordWrap(
true);
1837 horizontalLayout1->addWidget(labInfo);
1839 verticalLayout4->addLayout(horizontalLayout1);
1841 horizontalLayout2 =
new QHBoxLayout();
1842 horizontalLayout2->setObjectName(QString::fromUtf8(
"horizontalLayout2"));
1843 horizontalSpacer2 =
new QSpacerItem(40, 20, QSizePolicy::Expanding,
1846 horizontalLayout2->addItem(horizontalSpacer2);
1848 btnOk =
new QPushButton(frame);
1849 btnOk->setObjectName(QString::fromUtf8(
"btnOk"));
1850 btnOk->setMinimumSize(QSize(80, 0));
1851 btnOk->setFocusPolicy(Qt::StrongFocus);
1852 btnOk->setStyleSheet(QString::fromUtf8(
""));
1854 icon.addFile(QString::fromUtf8(
":/image/btn_ok.png"), QSize(),
1855 QIcon::Normal, QIcon::Off);
1856 btnOk->setIcon(icon);
1858 horizontalLayout2->addWidget(btnOk);
1860 btnCancel =
new QPushButton(frame);
1861 btnCancel->setObjectName(QString::fromUtf8(
"btnCancel"));
1862 btnCancel->setMinimumSize(QSize(80, 0));
1863 btnCancel->setFocusPolicy(Qt::StrongFocus);
1864 btnCancel->setStyleSheet(QString::fromUtf8(
""));
1866 icon1.addFile(QString::fromUtf8(
":/image/btn_close.png"), QSize(),
1867 QIcon::Normal, QIcon::Off);
1868 btnCancel->setIcon(icon1);
1870 horizontalLayout2->addWidget(btnCancel);
1871 verticalLayout4->addLayout(horizontalLayout2);
1872 verticalLayout2->addWidget(frame);
1873 verticalLayout1->addWidget(widgetMain);
1875 widgetTitle->raise();
1876 widgetMain->raise();
1879 this->btnOk->setText(QStringLiteral(
"OK"));
1880 this->btnCancel->setText(QStringLiteral(
"Cancel"));
1882 connect(this->btnOk, SIGNAL(clicked()),
this, SLOT(on_btnOk_clicked()));
1883 connect(this->btnMenu_Close, SIGNAL(clicked(
bool)),
this,
1884 SLOT(on_btnMenu_Close_clicked()));
1885 connect(this->btnCancel, SIGNAL(clicked()),
this,
1886 SLOT(on_btnMenu_Close_clicked()));
1889 void QUIMessageBox::initForm() {
1895 this->setProperty(
"form",
true);
1896 this->widgetTitle->setProperty(
"form",
"title");
1897 this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint |
1898 Qt::WindowMinMaxButtonsHint |
1899 Qt::WindowStaysOnTopHint);
1900 this->setFixedSize(280, 150);
1901 this->setWindowTitle(this->labTitle->text());
1905 int iconHeight = 18;
1906 this->labIcoMain->setFixedSize(30, 30);
1908 QList<QPushButton *> btns1 = this->frame->findChildren<QPushButton *>();
1910 foreach (QPushButton *btn, btns1) {
1911 btn->setMinimumWidth(
width);
1912 btn->setIconSize(QSize(iconWidth, iconHeight));
1918 QTimer *
timer =
new QTimer(
this);
1919 timer->setInterval(1000);
1920 connect(
timer, SIGNAL(timeout()),
this, SLOT(checkSec()));
1923 this->installEventFilter(
this);
1926 void QUIMessageBox::checkSec() {
1927 if (closeSec == 0) {
1931 if (currentSec < closeSec) {
1937 QString str = QString(
"å…³é—倒计时 %1 s").arg(closeSec - currentSec + 1);
1938 this->labTime->setText(str);
1942 this->closeSec = closeSec;
1943 this->currentSec = 0;
1944 this->labTime->clear();
1949 this->labIcoMain->setStyleSheet(
1950 "border-image: url(:/image/msg_info.png);");
1951 this->btnCancel->setVisible(
false);
1952 this->labTitle->setText(QStringLiteral(
"Information"));
1953 }
else if (
type == 1) {
1954 this->labIcoMain->setStyleSheet(
1955 "border-image: url(:/image/msg_question.png);");
1956 this->labTitle->setText(QStringLiteral(
"Question"));
1957 }
else if (
type == 2) {
1958 this->labIcoMain->setStyleSheet(
1959 "border-image: url(:/image/msg_error.png);");
1960 this->btnCancel->setVisible(
false);
1961 this->labTitle->setText(QStringLiteral(
"Error"));
1964 this->labInfo->setText(msg);
1965 this->setWindowTitle(this->labTitle->text());
1974 static QPoint mousePoint;
1975 static bool mousePressed =
false;
1977 QMouseEvent *
event =
static_cast<QMouseEvent *
>(evt);
1978 if (
event->type() == QEvent::MouseButtonPress) {
1979 if (
event->button() == Qt::LeftButton) {
1980 mousePressed =
true;
1981 mousePoint =
event->globalPos() - this->pos();
1984 }
else if (
event->type() == QEvent::MouseButtonRelease) {
1985 mousePressed =
false;
1987 }
else if (
event->type() == QEvent::MouseMove) {
1988 if (mousePressed && (
event->buttons() && Qt::LeftButton)) {
1989 this->move(
event->globalPos() - mousePoint);
1994 return QWidget::eventFilter(obj, evt);
1997 void QUIMessageBox::on_btnOk_clicked() {
1998 done(QMessageBox::Yes);
2002 void QUIMessageBox::on_btnMenu_Close_clicked() {
2003 done(QMessageBox::No);
2013 this->initControl();
2019 void QUIInputBox::initControl() {
2020 this->setObjectName(QString::fromUtf8(
"QUIInputBox"));
2023 this->resize(300, 160);
2025 this->resize(280, 150);
2028 verticalLayout1 =
new QVBoxLayout(
this);
2029 verticalLayout1->setSpacing(0);
2030 verticalLayout1->setObjectName(QString::fromUtf8(
"verticalLayout1"));
2031 verticalLayout1->setContentsMargins(1, 1, 1, 1);
2032 widgetTitle =
new QWidget(
this);
2033 widgetTitle->setObjectName(QString::fromUtf8(
"widgetTitle"));
2034 QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
2035 sizePolicy.setHorizontalStretch(0);
2036 sizePolicy.setVerticalStretch(0);
2037 sizePolicy.setHeightForWidth(widgetTitle->sizePolicy().hasHeightForWidth());
2038 widgetTitle->setSizePolicy(sizePolicy);
2039 widgetTitle->setMinimumSize(QSize(0, 30));
2040 horizontalLayout1 =
new QHBoxLayout(widgetTitle);
2041 horizontalLayout1->setSpacing(0);
2042 horizontalLayout1->setObjectName(QString::fromUtf8(
"horizontalLayout1"));
2043 horizontalLayout1->setContentsMargins(0, 0, 0, 0);
2044 labIco =
new QLabel(widgetTitle);
2045 labIco->setObjectName(QString::fromUtf8(
"labIco"));
2047 sizePolicy1.setHorizontalStretch(0);
2048 sizePolicy1.setVerticalStretch(0);
2049 sizePolicy1.setHeightForWidth(labIco->sizePolicy().hasHeightForWidth());
2050 labIco->setSizePolicy(sizePolicy1);
2051 labIco->setMinimumSize(QSize(30, 0));
2052 labIco->setAlignment(Qt::AlignCenter);
2054 horizontalLayout1->addWidget(labIco);
2056 labTitle =
new QLabel(widgetTitle);
2057 labTitle->setObjectName(QString::fromUtf8(
"labTitle"));
2058 labTitle->setStyleSheet(QString::fromUtf8(
""));
2059 labTitle->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter);
2061 horizontalLayout1->addWidget(labTitle);
2063 labTime =
new QLabel(widgetTitle);
2064 labTime->setObjectName(QString::fromUtf8(
"labTime"));
2065 QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Preferred);
2066 sizePolicy2.setHorizontalStretch(0);
2067 sizePolicy2.setVerticalStretch(0);
2068 sizePolicy2.setHeightForWidth(labTime->sizePolicy().hasHeightForWidth());
2069 labTime->setSizePolicy(sizePolicy2);
2070 labTime->setAlignment(Qt::AlignCenter);
2072 horizontalLayout1->addWidget(labTime);
2074 widgetMenu =
new QWidget(widgetTitle);
2075 widgetMenu->setObjectName(QString::fromUtf8(
"widgetMenu"));
2076 sizePolicy1.setHeightForWidth(widgetMenu->sizePolicy().hasHeightForWidth());
2077 widgetMenu->setSizePolicy(sizePolicy1);
2078 horizontalLayout2 =
new QHBoxLayout(widgetMenu);
2079 horizontalLayout2->setSpacing(0);
2080 horizontalLayout2->setObjectName(QString::fromUtf8(
"horizontalLayout2"));
2081 horizontalLayout2->setContentsMargins(0, 0, 0, 0);
2082 btnMenu_Close =
new QPushButton(widgetMenu);
2083 btnMenu_Close->setObjectName(QString::fromUtf8(
"btnMenu_Close"));
2085 sizePolicy3.setHorizontalStretch(0);
2086 sizePolicy3.setVerticalStretch(0);
2087 sizePolicy3.setHeightForWidth(
2088 btnMenu_Close->sizePolicy().hasHeightForWidth());
2089 btnMenu_Close->setSizePolicy(sizePolicy3);
2090 btnMenu_Close->setMinimumSize(QSize(30, 0));
2091 btnMenu_Close->setMaximumSize(QSize(30, 16777215));
2092 btnMenu_Close->setCursor(QCursor(Qt::ArrowCursor));
2093 btnMenu_Close->setFocusPolicy(Qt::NoFocus);
2094 btnMenu_Close->setFlat(
true);
2096 horizontalLayout2->addWidget(btnMenu_Close);
2097 horizontalLayout1->addWidget(widgetMenu);
2098 verticalLayout1->addWidget(widgetTitle);
2100 widgetMain =
new QWidget(
this);
2101 widgetMain->setObjectName(QString::fromUtf8(
"widgetMain"));
2102 widgetMain->setStyleSheet(QString::fromUtf8(
""));
2103 verticalLayout2 =
new QVBoxLayout(widgetMain);
2104 verticalLayout2->setSpacing(5);
2105 verticalLayout2->setObjectName(QString::fromUtf8(
"verticalLayout2"));
2106 verticalLayout2->setContentsMargins(5, 5, 5, 5);
2107 frame =
new QFrame(widgetMain);
2108 frame->setObjectName(QString::fromUtf8(
"frame"));
2109 frame->setFrameShape(QFrame::Box);
2110 frame->setFrameShadow(QFrame::Sunken);
2111 verticalLayout3 =
new QVBoxLayout(frame);
2112 verticalLayout3->setObjectName(QString::fromUtf8(
"verticalLayout3"));
2113 labInfo =
new QLabel(frame);
2114 labInfo->setObjectName(QString::fromUtf8(
"labInfo"));
2115 labInfo->setScaledContents(
false);
2116 labInfo->setWordWrap(
true);
2118 verticalLayout3->addWidget(labInfo);
2120 txtValue =
new QLineEdit(frame);
2121 txtValue->setObjectName(QString::fromUtf8(
"txtValue"));
2123 verticalLayout3->addWidget(txtValue);
2125 cboxValue =
new QComboBox(frame);
2126 cboxValue->setObjectName(QString::fromUtf8(
"cboxValue"));
2128 verticalLayout3->addWidget(cboxValue);
2130 lay =
new QHBoxLayout();
2131 lay->setObjectName(QString::fromUtf8(
"lay"));
2132 horizontalSpacer =
new QSpacerItem(40, 20, QSizePolicy::Expanding,
2135 lay->addItem(horizontalSpacer);
2137 btnOk =
new QPushButton(frame);
2138 btnOk->setObjectName(QString::fromUtf8(
"btnOk"));
2139 btnOk->setMinimumSize(QSize(80, 0));
2140 btnOk->setStyleSheet(QString::fromUtf8(
""));
2142 icon.addFile(QString::fromUtf8(
":/image/btn_ok.png"), QSize(),
2143 QIcon::Normal, QIcon::Off);
2144 btnOk->setIcon(icon);
2146 lay->addWidget(btnOk);
2148 btnCancel =
new QPushButton(frame);
2149 btnCancel->setObjectName(QString::fromUtf8(
"btnCancel"));
2150 btnCancel->setMinimumSize(QSize(80, 0));
2151 btnCancel->setStyleSheet(QString::fromUtf8(
""));
2153 icon1.addFile(QString::fromUtf8(
":/image/btn_close.png"), QSize(),
2154 QIcon::Normal, QIcon::Off);
2155 btnCancel->setIcon(icon1);
2157 lay->addWidget(btnCancel);
2158 verticalLayout3->addLayout(lay);
2159 verticalLayout2->addWidget(frame);
2160 verticalLayout1->addWidget(widgetMain);
2162 setTabOrder(txtValue, btnOk);
2163 setTabOrder(btnOk, btnCancel);
2165 this->labTitle->setText(QStringLiteral(
"Input Box"));
2166 this->btnOk->setText(QStringLiteral(
"OK"));
2167 this->btnCancel->setText(QStringLiteral(
"Cancel"));
2169 connect(this->btnOk, SIGNAL(clicked()),
this, SLOT(on_btnOk_clicked()));
2170 connect(this->btnMenu_Close, SIGNAL(clicked(
bool)),
this,
2171 SLOT(on_btnMenu_Close_clicked()));
2172 connect(this->btnCancel, SIGNAL(clicked()),
this,
2173 SLOT(on_btnMenu_Close_clicked()));
2176 void QUIInputBox::initForm() {
2182 this->setProperty(
"form",
true);
2183 this->widgetTitle->setProperty(
"form",
"title");
2184 this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint |
2185 Qt::WindowMinMaxButtonsHint |
2186 Qt::WindowStaysOnTopHint);
2187 this->setFixedSize(280, 150);
2188 this->setWindowTitle(this->labTitle->text());
2192 int iconHeight = 18;
2194 QList<QPushButton *> btns = this->frame->findChildren<QPushButton *>();
2196 foreach (QPushButton *btn, btns) {
2197 btn->setMinimumWidth(
width);
2198 btn->setIconSize(QSize(iconWidth, iconHeight));
2204 QTimer *
timer =
new QTimer(
this);
2205 timer->setInterval(1000);
2206 connect(
timer, SIGNAL(timeout()),
this, SLOT(checkSec()));
2209 this->installEventFilter(
this);
2212 void QUIInputBox::checkSec() {
2213 if (closeSec == 0) {
2217 if (currentSec < closeSec) {
2223 QString str = QString(
"å…³é—倒计时 %1 s").arg(closeSec - currentSec + 1);
2224 this->labTime->setText(str);
2230 QString defaultValue,
2232 this->closeSec = closeSec;
2233 this->currentSec = 0;
2234 this->labTime->clear();
2235 this->labInfo->setText(title);
2240 this->cboxValue->setVisible(
false);
2241 this->txtValue->setPlaceholderText(defaultValue);
2244 this->txtValue->setEchoMode(QLineEdit::Password);
2246 }
else if (
type == 1) {
2247 this->txtValue->setVisible(
false);
2248 this->cboxValue->addItems(defaultValue.split(
"|"));
2260 static QPoint mousePoint;
2261 static bool mousePressed =
false;
2263 QMouseEvent *
event =
static_cast<QMouseEvent *
>(evt);
2264 if (
event->type() == QEvent::MouseButtonPress) {
2265 if (
event->button() == Qt::LeftButton) {
2266 mousePressed =
true;
2267 mousePoint =
event->globalPos() - this->pos();
2270 }
else if (
event->type() == QEvent::MouseButtonRelease) {
2271 mousePressed =
false;
2273 }
else if (
event->type() == QEvent::MouseMove) {
2274 if (mousePressed && (
event->buttons() && Qt::LeftButton)) {
2275 this->move(
event->globalPos() - mousePoint);
2280 return QWidget::eventFilter(obj, evt);
2283 void QUIInputBox::on_btnOk_clicked() {
2284 if (this->txtValue->isVisible()) {
2285 value = this->txtValue->text();
2286 }
else if (this->cboxValue->isVisible()) {
2287 value = this->cboxValue->currentText();
2290 done(QMessageBox::Ok);
2294 void QUIInputBox::on_btnMenu_Close_clicked() {
2295 done(QMessageBox::Cancel);
2305 int fontId = QFontDatabase::addApplicationFont(
2306 ":/fonts/fontawesome-webfont.ttf");
2307 QStringList fontName = QFontDatabase::applicationFontFamilies(fontId);
2309 if (fontName.count() > 0) {
2310 iconFont = QFont(fontName.at(0));
2312 qDebug() <<
"load fontawesome-webfont.ttf error";
2317 iconFont.setPointSize(
size);
2318 lab->setFont(iconFont);
2323 iconFont.setPointSize(
size);
2324 btn->setFont(iconFont);
2332 quint32 pixHeight) {
2333 QPixmap pix(pixWidth, pixHeight);
2334 pix.fill(Qt::transparent);
2337 painter.begin(&pix);
2338 painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
2339 painter.setPen(QColor(
color));
2340 painter.setBrush(QColor(
color));
2342 iconFont.setPointSize(
size);
2343 painter.setFont(iconFont);
2344 painter.drawText(pix.rect(), Qt::AlignCenter, c);
2352 int index = btns.indexOf(btn);
2356 pix = pixNormal.at(index);
2358 pix = pixDark.at(index);
2366 const QString &
type,
2368 const QString &borderColor,
2369 const QString &normalBgColor,
2370 const QString &darkBgColor,
2371 const QString &normalTextColor,
2372 const QString &darkTextColor) {
2374 if (
type ==
"top") {
2375 strBorder = QString(
"border-width:%1px 0px 0px 0px;padding:%1px %2px "
2378 .arg(borderWidth * 2);
2379 }
else if (
type ==
"right") {
2380 strBorder = QString(
"border-width:0px %1px 0px 0px;padding:%2px %1px "
2383 .arg(borderWidth * 2);
2384 }
else if (
type ==
"bottom") {
2385 strBorder = QString(
"border-width:0px 0px %1px 0px;padding:%2px %2px "
2388 .arg(borderWidth * 2);
2389 }
else if (
type ==
"left") {
2390 strBorder = QString(
"border-width:0px 0px 0px %1px;padding:%2px %2px "
2393 .arg(borderWidth * 2);
2397 qss.append(QString(
"QWidget[flag=\"%1\"] "
2398 "QAbstractButton{border-style:none;border-radius:0px;"
2399 "padding:5px;color:%2;background:%3;}")
2401 .arg(normalTextColor)
2402 .arg(normalBgColor));
2404 qss.append(QString(
"QWidget[flag=\"%1\"] QAbstractButton:hover,"
2405 "QWidget[flag=\"%1\"] QAbstractButton:pressed,"
2406 "QWidget[flag=\"%1\"] QAbstractButton:checked{"
2407 "border-style:solid;%2border-color:%3;color:%4;"
2415 widget->setStyleSheet(qss.join(
""));
2419 QList<QToolButton *> btns,
2424 const QString &
type,
2426 const QString &borderColor,
2427 const QString &normalBgColor,
2428 const QString &darkBgColor,
2429 const QString &normalTextColor,
2430 const QString &darkTextColor) {
2431 int btnCount = btns.count();
2432 int charCount = pixChar.count();
2433 if (btnCount <= 0 || charCount <= 0 || btnCount != charCount) {
2438 if (
type ==
"top") {
2439 strBorder = QString(
"border-width:%1px 0px 0px 0px;padding:%1px %2px "
2442 .arg(borderWidth * 2);
2443 }
else if (
type ==
"right") {
2444 strBorder = QString(
"border-width:0px %1px 0px 0px;padding:%2px %1px "
2447 .arg(borderWidth * 2);
2448 }
else if (
type ==
"bottom") {
2449 strBorder = QString(
"border-width:0px 0px %1px 0px;padding:%2px %2px "
2452 .arg(borderWidth * 2);
2453 }
else if (
type ==
"left") {
2454 strBorder = QString(
"border-width:0px 0px 0px %1px;padding:%2px %2px "
2457 .arg(borderWidth * 2);
2461 qss.append(QString(
"QWidget[flag=\"%1\"] "
2462 "QAbstractButton{border-style:none;border-radius:0px;"
2463 "padding:5px;color:%2;background:%3;}")
2465 .arg(normalTextColor)
2466 .arg(normalBgColor));
2468 qss.append(QString(
"QWidget[flag=\"%1\"] QAbstractButton:hover,"
2469 "QWidget[flag=\"%1\"] QAbstractButton:pressed,"
2470 "QWidget[flag=\"%1\"] QAbstractButton:checked{"
2471 "border-style:solid;%2border-color:%3;color:%4;"
2479 qss.append(QString(
"QWidget#%1{background:%2;}")
2480 .arg(widget->objectName())
2481 .arg(normalBgColor));
2483 qss.append(QString(
"QToolButton{border-width:0px;}"));
2484 qss.append(QString(
"QToolButton{background-color:%1;color:%2;}")
2486 .arg(normalTextColor));
2487 qss.append(QString(
"QToolButton:hover,QToolButton:pressed,QToolButton:"
2488 "checked{background-color:%1;color:%2;}")
2490 .arg(darkTextColor));
2492 widget->setStyleSheet(qss.join(
""));
2494 for (
int i = 0; i < btnCount; i++) {
2497 QPixmap pixNormal =
getPixmap(normalTextColor, QChar(pixChar.at(i)),
2498 iconSize, iconWidth, iconHeight);
2499 QPixmap pixDark =
getPixmap(darkTextColor, QChar(pixChar.at(i)),
2500 iconSize, iconWidth, iconHeight);
2502 btns.at(i)->setIcon(QIcon(pixNormal));
2503 btns.at(i)->setIconSize(QSize(iconWidth, iconHeight));
2504 btns.at(i)->installEventFilter(
this);
2506 this->btns.append(btns.at(i));
2507 this->pixNormal.append(pixNormal);
2508 this->pixDark.append(pixDark);
2513 QList<QToolButton *> btns,
2518 const QString &normalBgColor,
2519 const QString &darkBgColor,
2520 const QString &normalTextColor,
2521 const QString &darkTextColor) {
2522 int btnCount = btns.count();
2523 int charCount = pixChar.count();
2524 if (btnCount <= 0 || charCount <= 0 || btnCount != charCount) {
2529 qss.append(QString(
"QToolButton{border-width:0px;}"));
2530 qss.append(QString(
"QToolButton{background-color:%1;color:%2;}")
2532 .arg(normalTextColor));
2533 qss.append(QString(
"QToolButton:hover,QToolButton:pressed,QToolButton:"
2534 "checked{background-color:%1;color:%2;}")
2536 .arg(darkTextColor));
2538 frame->setStyleSheet(qss.join(
""));
2540 for (
int i = 0; i < btnCount; i++) {
2543 QPixmap pixNormal =
getPixmap(normalTextColor, QChar(pixChar.at(i)),
2544 iconSize, iconWidth, iconHeight);
2545 QPixmap pixDark =
getPixmap(darkTextColor, QChar(pixChar.at(i)),
2546 iconSize, iconWidth, iconHeight);
2548 btns.at(i)->setIcon(QIcon(pixNormal));
2549 btns.at(i)->setIconSize(QSize(iconWidth, iconHeight));
2550 btns.at(i)->installEventFilter(
this);
2552 this->btns.append(btns.at(i));
2553 this->pixNormal.append(pixNormal);
2554 this->pixDark.append(pixDark);
2559 if (watched->inherits(
"QToolButton")) {
2560 QToolButton *btn = (QToolButton *)watched;
2561 int index = btns.indexOf(btn);
2563 if (
event->type() == QEvent::Enter) {
2564 btn->setIcon(QIcon(pixDark.at(index)));
2565 }
else if (
event->type() == QEvent::Leave) {
2566 if (btn->isChecked()) {
2567 btn->setIcon(QIcon(pixDark.at(index)));
2569 btn->setIcon(QIcon(pixNormal.at(index)));
2575 return QObject::eventFilter(watched,
event);
2610 set.beginGroup(
"BaseConfig");
2617 set.beginGroup(
"BaseConfig");
2622 #if (QT_VERSION <= QT_VERSION_CHECK(5, 0, 0))
2632 if (file.size() == 0) {
2639 if (file.open(QFile::ReadOnly)) {
2642 while (!file.atEnd()) {
2643 QString line = file.readLine();
2644 line = line.replace(
"\r",
"");
2645 line = line.replace(
"\n",
"");
2646 QStringList list = line.split(
"=");
2648 if (list.count() == 2) {
2649 if (list.at(1) ==
"") {
QRegularExpression QtCompatRegExp
IconHelper(QObject *parent=0)
void setIcon(QLabel *lab, QChar c, quint32 size=9)
static IconHelper * Instance()
bool eventFilter(QObject *watched, QEvent *event)
QPixmap getPixmap(const QString &color, QChar c, quint32 size=9, quint32 pixWidth=10, quint32 pixHeight=10)
static void setStyle(QWidget *widget, const QString &type="left", int borderWidth=3, const QString &borderColor="#029FEA", const QString &normalBgColor="#292F38", const QString &darkBgColor="#1D2025", const QString &normalTextColor="#54626F", const QString &darkTextColor="#FDFDFD")
void cancelPreviousPickingOperation(bool aborted)
ccDBRoot * db()
Returns real 'dbRoot' object.
void updateOverlayDialogsPlacement() override
Forces the update of all registered MDI 'overlay' dialogs.
static bool s_autoSaveGuiElementPos
void updateFullScreenMenu(bool state)
bool m_FirstShow
Flag: first time the window is made visible.
void saveGUIElementsPos()
Saves position and state of all GUI elements.
static QTextCodec * codecForName(const char *name)
static void WriteConfig()
static QString BorderColor
static QString DarkColorEnd
static QString NormalColorStart
static QString ConfigFile
static QString PanelColor
static bool CheckConfig()
static QString NormalColorEnd
static QString DarkColorStart
void setMessage(const QString &msg, int type, int closeSec=0)
static QUIMessageBox * Instance()
bool eventFilter(QObject *obj, QEvent *evt)
QUIMessageBox(QWidget *parent=0)
void setIconMain(QChar str, quint32 size=9)
void closeEvent(QCloseEvent *)
ccHObject * getRootEntity()
Returns associated root object.
unsigned getChildrenNumber() const
Returns the number of children.
static const QString CurrentTheme()
static const QString MainWinState()
static const QString MainWinGeom()
static const QString MainWindowSettings()
static const QString ThemeSettings()
static QVariant getValue(const QString §ion, const QString &key, const QVariant &defaultValue=QVariant())
static void setValue(const QString §ion, const QString &key, const QVariant &value)
static const QString TITLE
static const QString APP_LOGO
Tensor Append(const Tensor &self, const Tensor &other, const utility::optional< int64_t > &axis)
Appends the two tensors, along the given axis into a new tensor. Both the tensors must have same data...
Tensor Minimum(const Tensor &input, const Tensor &other)
Computes the element-wise minimum of input and other. The tensors must have same data type and device...
void Resize(const core::Tensor &src_im, core::Tensor &dst_im, Image::InterpType interp_type)
static const std::string path