-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathpluginsettingdialog.cpp
115 lines (109 loc) · 3.91 KB
/
pluginsettingdialog.cpp
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include "pluginsettingdialog.h"
#include "ui_pluginsettingdialog.h"
pluginSettingDialog::pluginSettingDialog(Settings *settings,QWidget *parent) :
QDialog(parent),
ui(new Ui::pluginSettingDialog)
{
ui->setupUi(this);
if(settings->value("chartModeCheckBox").toInt()){
ui->tabWidget->setCurrentIndex(1);
}
else {
ui->tabWidget->setCurrentIndex(0);
}
pal=QPalette();//首先初始化画板
QMapIterator<QString,QVariant> i(*settings);
while(i.hasNext())
{
i.next();
//找到以key为名字的widget
QWidget *obj=findChild<QWidget*>(i.key());
if(obj==0){qDebug()<<"不能找到对象名为:"<<i.key();continue;}
if(obj->metaObject()->className()==QStringLiteral("QComboBox"))
{
QComboBox *cb=(QComboBox*)obj;
cb->setCurrentIndex(i.value().toInt());
}
else if(obj->metaObject()->className()==QStringLiteral("QCheckBox"))
{
QCheckBox *cb=(QCheckBox*)obj;
cb->setChecked(i.value().toInt());
}
else if(obj->metaObject()->className()==QStringLiteral("QSpinBox"))
{
QSpinBox *sb=(QSpinBox*)obj;
sb->setValue(i.value().toInt());
}
else if(obj->metaObject()->className()==QStringLiteral("QWidget"))
{
QWidget *wg=(QWidget*)obj;
pal.setColor(QPalette::Background,i.value().value<QColor>());
wg->setAutoFillBackground(true);
wg->setPalette(pal);
//qDebug()<<"颜色是:"<<i.value().value<QColor>();
}
else if(obj->metaObject()->className()==QStringLiteral("QLineEdit"))
{
QLineEdit *le=(QLineEdit*)obj;
le->setText(i.value().value<QString>());
}
}
foreach(QPushButton* btn,findChildren<QPushButton*>(QRegExp("\\w*ColorPushButton")))
{
connect(btn,SIGNAL(clicked(bool)),this,SLOT(selectColor(void)));
}
}
pluginSettingDialog::~pluginSettingDialog()
{
delete ui;
}
void pluginSettingDialog::getDisplayContentSetting(Settings *settings)
{
QMapIterator<QString,QVariant> i(*settings);
while(i.hasNext())
{
i.next();
//找到以key为名字的widget
QWidget *obj=findChild<QWidget*>(i.key());
if(obj==0){qDebug()<<"不能找到对象名为:"<<i.key();continue;}
if(obj->metaObject()->className()==QStringLiteral("QComboBox"))
{
QComboBox *cb=(QComboBox*)obj;
settings->insert(cb->objectName(),cb->currentIndex());
}
else if(obj->metaObject()->className()==QStringLiteral("QCheckBox"))
{
QCheckBox *cb=(QCheckBox*)obj;
settings->insert(cb->objectName(),cb->isChecked());
}
else if(obj->metaObject()->className()==QStringLiteral("QSpinBox"))
{
QSpinBox *sb=(QSpinBox*)obj;
settings->insert(sb->objectName(),sb->value());
}
else if(obj->metaObject()->className()==QStringLiteral("QWidget"))
{
QWidget *wg=(QWidget*)obj;
settings->insert(wg->objectName(),wg->palette().background().color());
}
else if(obj->metaObject()->className()==QStringLiteral("QLineEdit"))
{
QLineEdit *le=(QLineEdit*)obj;
settings->insert(le->objectName(),le->text());
}
}
}
void pluginSettingDialog::selectColor()
{
QWidget *colorWidget;
//"netUpColorPushButton"-->"netUpWidget"
colorWidget=findChild<QWidget*>(sender()->objectName().replace("ColorPushButton","Widget"));
QColor color = QColorDialog::getColor(colorWidget->palette().background().color(),
this,tr("颜色对话框"),QColorDialog::ShowAlphaChannel);
if(color!=QColor::Invalid)
{
pal.setColor(QPalette::Background,color);
colorWidget->setAutoFillBackground(true);
colorWidget->setPalette(pal);
}
}