-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcustomdevice.cpp
More file actions
72 lines (69 loc) · 2.59 KB
/
Copy pathcustomdevice.cpp
File metadata and controls
72 lines (69 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "customdevice.h"
CustomDevice::CustomDevice(QGraphicsItem * parent) :
QGraphicsProxyWidget (parent) {
initCustomDevice();
}
CustomDevice::~CustomDevice() {
customDeviceButton->deleteLater(); // 释放自定义设备按钮部件
customDeviceButton = nullptr;
};
CustomDevice::CustomDevice(QString name, QString iconPath, QString status,
QGraphicsItem * parent) :
QGraphicsProxyWidget (parent) {
this->name = name;
this->iconPath = iconPath;
this->status = status;
initCustomDevice();
}
/* 初始化自定义设备的样式 */
void CustomDevice::initCustomStyle() {
customDeviceButton->setFixedSize(120, 160);
customDeviceButton->setStyleSheet("background: rgb(0, 95, 108);"
"border: 0;"
"color: white;");
}
/* 初始化自定义设备 */
void CustomDevice::initCustomDevice() {
customDeviceButton = new QPushButton();
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
QVBoxLayout * vBoxLayout = new QVBoxLayout(customDeviceButton);
vBoxLayout->setSpacing(0);
vBoxLayout->setMargin(0);
customDeviceButton->setLayout(vBoxLayout);
/* 设备名字部件 */
titleName = new QLabel(customDeviceButton);
titleName->setObjectName("titleName");
titleName->setAlignment(Qt::AlignCenter);
titleName->setFixedHeight(35);
/* 图标部件 */
iconControl = new QLabel(customDeviceButton);
iconControl->setObjectName("iconControl");
/* 状态部件 */
statusPrompt = new QLabel(customDeviceButton);
statusPrompt->setObjectName("statusPrompt");
statusPrompt->setAlignment(Qt::AlignCenter);
statusPrompt->setFixedHeight(35);
vBoxLayout->addWidget(titleName);
vBoxLayout->addWidget(iconControl);
vBoxLayout->addWidget(statusPrompt);
/* 初始化自定义样式和内容 */
initCustomStyle();
setCustomDeviceContent(name, iconPath, status);
setWidget(customDeviceButton);
}
/* 自定义设备的鼠标点击事件 */
void CustomDevice::mousePressEvent(QGraphicsSceneMouseEvent * event) {
if (event) {
customDeviceButton->clicked();
}
}
/* 设置或修改自定义设备内容的接口函数 */
void CustomDevice::setCustomDeviceContent(QString name, QString iconPath, QString status) {
titleName->setText(name);
QString iconBackground = QStringLiteral("border-image: url(\"%1\");").arg(iconPath);
iconControl->setStyleSheet(iconBackground);
statusPrompt->setText(status);
if (status == "离线") {
statusPrompt->setStyleSheet("color: red;");
}
}