QT添加托盘代码

 

ExpandedBlockStart.gif 代码
  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 

 

 

转载于:https://www.cnblogs.com/weisteve/archive/2010/06/17/1772639.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值