1
#include
"
vs2008smart.h
"
2
#include
"
stdafx.h
"
3
Vs2008Smart::Vs2008Smart(QWidget
*
parent, Qt::WFlags flags)
4
: QMainWindow(parent, flags)
5
{
6
ui.setupUi(
this
);
7
8
//
this->setAttribute(Qt::WA_TranslucentBackground);
//
透明效果
9
10
//
窗口居中
11
QDesktopWidget
*
deskTop
=
QApplication::desktop();
12
int
screenIndex
=
deskTop
->
screenNumber (
this
);
//
得到this widget主要出于哪个屏幕中,返回屏幕index
13
QRect rect
=
deskTop
->
screenGeometry(screenIndex);
//
得到该屏幕大小
14
int
x
=
(rect.width()
-
width())
/
2
;
15
int
y
=
(rect.height()
-
height())
/
2
;
16
this
->
move(x,y);
17
18
//
以可读写方式打开串口
19
/*
20
QFileSystemModel *model = new QFileSystemModel;
21
model->setRootPath(QDir::currentPath());
22
//QTreeView *tree = new QTreeView(splitter);
23
ui.treeView->setModel(model);
24
*/
25
26
//
添加listView Items
27
//
ui.listWidget->insertItem(itemSize++,tr("通讯设置"));
28
//
ui.listWidget->insertItem(itemSize++,QObject::tr("摄像头位置调整"));
29
//
ui.listWidget->insertItem(itemSize++,tr("标定视频范围"));
30
itemSize
=
0
;
31
32
//
TODO:添加页面
33
34
//
comPage=new com_Config();
35
camPage
=
new
cam_Config();
36
demarcatePage
=
new
demarcate_Config();
37
matrixPage
=
new
matrix_Config();
38
39
/*
40
* 移除所有widgets
41
*/
42
while
(ui.stackedWidget
->
count()
!=
0
)
43
ui.stackedWidget
->
removeWidget(ui.stackedWidget
->
widget(
0
));
44
45
//
addPageItem(tr("通讯设置"),comPage);
46
addPageItem(tr(
"
摄像机位置调整
"
),camPage);
47
addPageItem(tr(
"
摄像机有效信息位置
"
),demarcatePage);
48
addPageItem(tr(
"
摄像机内参数标定
"
),matrixPage);
49
50
ui.listWidget
->
setEnabled(
false
);
51
52
setPageItemIndex(
0
);
53
//
ui.stackedWidget->addWidget(directPage);
54
55
//
ui.btn_prepage->setEnabled(false);
56
setBtnEnable();
57
connect(ui.btn_prepage,SIGNAL(clicked()),
this
,SLOT(setPrePage()));
//
连接下一页
58
connect(ui.btn_nextpage,SIGNAL(clicked()),
this
,SLOT(setNextPage()));
59
connect(ui.listWidget,SIGNAL(currentRowChanged(
int
)),
this
,SLOT(setStackedWidget(
int
)));
//
连接左边listWidget
60
//
connect(ui.stackedWidget,SIGNAL(currentChanged(int)),ui.listWidget,SLOT(setListWidget(int)));
61
connect(
this
,SIGNAL(updateListWidget(
int
)),
this
,SLOT(setListWidget(
int
)));
62
63
//
connect(ui.btn_close,SIGNAL(clicked()),qApp,SLOT(quit()));
64
65
MoveMouseTimer
=
new
QTimer(
this
);
66
connect(MoveMouseTimer,SIGNAL(timeout()),
this
,SLOT(moveMouse()));
67
connect(ui.btn_openV,SIGNAL(clicked()),
this
,SLOT(ControlmoveMouse()));
68
x
=
0
;y
=
0
;
69
70
/*
71
* 增加托盘的相关初始化代码
72
*/
73
iTrayIcon
=
new
QSystemTrayIcon();
74
iTrayIcon
->
setIcon( QIcon(
"
IconTray.png
"
));
75
iTrayIcon
->
show();
76
iTrayIcon
->
setToolTip(QString(tr(
"
One world, One dream!
"
)));
77
iTrayIcon
->
showMessage(
"
Message
"
,
"
Hi, I am here.
"
);
78
connect( iTrayIcon, SIGNAL(messageClicked ()),
this
, SLOT(hiMessage()));
79
addMenu();
80
//
end of the trayicon
81
82
}
83
84
void
Vs2008Smart::moveMouse()
85
{
86
SystemInteraction::MoveMouseToXY(x,y);
87
x
+=
100
;
88
//
y++;
89
if
(x
>
60000
)
90
{
91
MoveMouseTimer
->
stop();
92
x
=
0
;
93
}
94
}
95
/*
96
* 移动鼠标至x,y坐标处
97
*/
98
void
Vs2008Smart::ControlmoveMouse()
99
{
100
if
(MoveMouseTimer
->
isActive())
101
{
102
MoveMouseTimer
->
stop();
103
}
104
else
105
{
106
MoveMouseTimer
->
start(
50
);
//
0.5s中断一次
107
}
108
}
109
110
Vs2008Smart::
~
Vs2008Smart()
111
{
112
//
delete comPage;
113
delete camPage;
114
delete demarcatePage;
115
delete matrixPage;
116
qDebug(
"
Vs2008Smart is destruct!\n
"
);
117
}
118
119
/*
120
* 设置上一页下一页的使能状态
121
*/
122
void
Vs2008Smart::setBtnEnable()
123
{
124
125
ui.Page_Oper
->
setText(QString(
"
第
"
)
+
QString::number(ui.stackedWidget
->
currentIndex()
+
1
)
+
QString(
"
步/共
"
)
+
QString::number(ui.stackedWidget
->
count())
+
QString(
"
步
"
));
126
if
(ui.stackedWidget
->
count()
==
0
)
127
return
;
128
if
(ui.stackedWidget
->
currentIndex()
==
0
)
129
ui.btn_prepage
->
setEnabled(
false
);
130
else
131
ui.btn_prepage
->
setEnabled(
true
);
132
133
if
(ui.stackedWidget
->
currentIndex()
==
ui.stackedWidget
->
count()
-
1
)
134
{
135
ui.btn_nextpage
->
setText(
"
完成
"
);
136
//
ui.btn_nextpage->setEnabled(false);
137
}
138
else
139
{
140
ui.btn_nextpage
->
setEnabled(
true
);
141
ui.btn_nextpage
->
setText(tr(
"
下一页
"
));
142
}
143
}
144
145
void
Vs2008Smart::setPrePage()
146
{
147
ui.stackedWidget
->
setCurrentIndex(ui.stackedWidget
->
currentIndex()
-
1
);
//
这里直接用slot,不会再次发送singal,或许这样理解比较好
148
149
setBtnEnable();
150
emit updateListWidget(ui.stackedWidget
->
currentIndex());
151
}
152
153
void
Vs2008Smart::setNextPage()
154
{
155
ui.stackedWidget
->
setCurrentIndex(ui.stackedWidget
->
currentIndex()
+
1
);
156
setBtnEnable();
157
emit updateListWidget(ui.stackedWidget
->
currentIndex());
158
}
159
160
void
Vs2008Smart::setListWidget(
int
curpage)
161
{
162
ui.listWidget
->
setCurrentRow(curpage);
163
//
setVision(curpage);
//
设置vision
164
}
165
166
void
Vs2008Smart::setStackedWidget(
int
page)
167
{
168
ui.stackedWidget
->
setCurrentIndex(page);
169
//
setVision(page);
//
设置vision
170
setBtnEnable();
171
}
172
173
////////////////////////////////////////////////////////////////////////
//
174
/*
175
* 添加一个页面,包括item和widget页面
176
*/
177
void
Vs2008Smart::addPageItem(QString itemName,QWidget
*
pageWidget)
178
{
179
//
180
ui.listWidget
->
insertItem(itemSize
++
,itemName);
181
ui.stackedWidget
->
addWidget(pageWidget);
182
}
183
184
void
Vs2008Smart::setPageItemIndex(
int
Index)
185
{
186
ui.listWidget
->
setCurrentRow(Index);
187
ui.stackedWidget
->
setCurrentIndex(Index);
188
}
189
190
/*
191
* 设置每个页面是否是当前显示页面的函数
192
*/
193
/*
194
void Vs2008Smart::setVision(int Index)
195
{
196
switch(Index)
197
{
198
case 0:
199
camPage->isVision=true;
200
demarcatePage->isVision=false;
201
matrixPage->isVision=false;
202
break;
203
case 1:
204
camPage->isVision=false;
205
demarcatePage->isVision=true;
206
matrixPage->isVision=false;
207
break;
208
case 2:
209
camPage->isVision=false;
210
demarcatePage->isVision=false;
211
matrixPage->isVision=true;
212
break;
213
}
214
}
215
*/
216
217
/*
218
* 点击托盘消息slot
219
*/
220
void
Vs2008Smart::hiMessage()
221
{
222
iTrayIcon
->
setIcon( QIcon(
"
IconTray.png
"
));
223
}
224
225
/*
226
* 推出函数
227
*/
228
void
Vs2008Smart::exitProgram()
229
{
230
exit(
-
1
);
231
}
232
233
/*
234
* 添加菜单项
235
*/
236
void
Vs2008Smart::addMenu()
237
{
238
diaplayAction
=
new
QAction(tr(
"
&配置参数
"
),
this
);
239
connect(diaplayAction, SIGNAL(triggered()),
this
, SLOT(displayVary()));
240
normalModeAction
=
new
QAction(tr(
"
&普通模式
"
),
this
);
241
//
connect(normalModeAction, SIGNAL(triggered()), this, SLOT(show()));
242
restoreAction
=
new
QAction(tr(
"
&Restore
"
),
this
);
243
connect(restoreAction, SIGNAL(triggered()),
this
, SLOT(showNormal()));
244
quitAction
=
new
QAction(tr(
"
&Quit
"
),
this
);
245
connect(quitAction, SIGNAL(triggered()),
this
, SLOT(exitProgram()));
246
iTraymenu
=
new
QMenu();
247
iTraymenu
->
addAction(diaplayAction);
248
iTraymenu
->
addAction(normalModeAction);
249
iTraymenu
->
addAction(restoreAction);
250
iTraymenu
->
addSeparator();
251
iTraymenu
->
addAction(quitAction);
252
iTrayIcon
->
setContextMenu(iTraymenu);
253
}
254
255
/*
256
* 切换显示还是隐藏
257
*/
258
void
Vs2008Smart::displayVary()
259
{
260
//
261
if
(
this
->
isHidden())
262
{
263
this
->
setVisible(TRUE);
264
}
265
else
266
{
267
this
->
setVisible(FALSE);
268
}
269
}
270