xtoolbar.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #include "xtoolbar.h"
  2. XToolBar::XToolBar(QWidget *parent) :
  3. QWidget(parent)
  4. {
  5. initVariable();
  6. initUI();
  7. }
  8. XToolBar::~XToolBar()
  9. {
  10. delete m_pLabelLogo;
  11. for(int i=0;i<m_pListToolButton.count();i++)
  12. {
  13. if(m_pListToolButton[i])
  14. delete m_pListToolButton[i];
  15. }
  16. }
  17. void XToolBar::slotOnButtonSelect(XToolButton *btn)
  18. {
  19. for(int i=0;i<m_pListToolButton.count();i++)
  20. {
  21. if(btn != m_pListToolButton[i])
  22. {
  23. m_pListToolButton[i]->setMousePressFlag(false);
  24. }
  25. }
  26. }
  27. void XToolBar::initVariable()
  28. {
  29. m_pLabelLogo = new QLabel(this);
  30. m_pLayout = new QHBoxLayout(this);
  31. QStringList names;
  32. names<<"号码魔方"<<"实号下载"<<"瞬时快检"<<"信源检测";
  33. QStringList files;
  34. files<<":/toolBar/mf"<<":/toolBar/shkj"<<":/toolBar/shunshi"<<":/toolBar/xinyuan"
  35. ;
  36. for(int i=0;i<names.count();i++)
  37. {
  38. XToolButton *button = new XToolButton(this);
  39. button->setPixmap(QPixmap(files.at(i)));
  40. button->setText(names.at(i));
  41. m_pListToolButton.append(button);
  42. connect(button,SIGNAL(signalLabelPress(XToolButton*)),this,SLOT(slotOnButtonSelect(XToolButton*)));
  43. }
  44. }
  45. void XToolBar::initUI()
  46. {
  47. m_pLabelLogo->setMaximumSize(48,48);
  48. m_pLabelLogo->setPixmap(QPixmap(":/common/appicon"));
  49. m_pLabelLogo->setScaledContents(true);
  50. setMouseTracking(true);
  51. setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed);
  52. for(int i=0;i<m_pListToolButton.count();i++)
  53. {
  54. m_pLayout->addWidget(m_pListToolButton[i]);
  55. }
  56. m_pLayout->addStretch(1);
  57. m_pLayout->addWidget(m_pLabelLogo);
  58. m_pLayout->setContentsMargins(10,0,0,0);
  59. m_pLayout->setSpacing(5);
  60. this->setLayout(m_pLayout);
  61. }
  62. void XToolBar::mouseMoveEvent(QMouseEvent *e)
  63. {
  64. setCursor(Qt::ArrowCursor);
  65. if((e->buttons() == Qt::LeftButton) && m_mouseMoveWindowFlag)
  66. {
  67. // static QWidget* parent_widget = this->parentWidget();
  68. // QPoint parent_point = parent_widget->pos();
  69. // parent_point.setX(parent_point.x() + e->x() - m_mouseSrcPos.x());
  70. // parent_point.setY(parent_point.y() + e->y() - m_mouseSrcPos.y());
  71. // parent_widget->move(parent_point);
  72. }
  73. e->ignore();
  74. }
  75. void XToolBar::mousePressEvent(QMouseEvent *e)
  76. {
  77. m_mouseMoveWindowFlag = false;
  78. if (e->button() == Qt::LeftButton)
  79. {
  80. // if(e->y()<TITLEBAR_MARGIN||e->x()<TITLEBAR_MARGIN||rect().width()-e->x()<TITLEBAR_MARGIN)
  81. // {
  82. // e->ignore();
  83. // m_mouseMoveWindowFlag = false;
  84. // return;
  85. // }
  86. m_mouseSrcPos = e->pos();
  87. m_mouseMoveWindowFlag = true;
  88. }
  89. e->ignore();
  90. }
  91. void XToolBar::mouseReleaseEvent(QMouseEvent *e)
  92. {
  93. m_mouseMoveWindowFlag = false;
  94. e->ignore();
  95. }
  96. void XToolBar::paintEvent(QPaintEvent *e)
  97. {
  98. }