xtitlebar.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include "xtitlebar.h"
  2. XTitleBar::XTitleBar(QWidget *parent) :
  3. QWidget(parent)
  4. {
  5. initVariable();
  6. initUI();
  7. }
  8. XTitleBar::~XTitleBar()
  9. {
  10. delete m_pLabelIcon;
  11. delete m_pLabelTitle;
  12. delete m_pBtnClose;
  13. delete m_pBtnMin;
  14. delete m_pBtnMax;
  15. delete m_pLayout;
  16. }
  17. void XTitleBar::initVariable()
  18. {
  19. m_mouseMoveWindowFlag = false;
  20. m_pLabelIcon = new QLabel(this);
  21. m_pLabelTitle = new QLabel(this);
  22. m_pLabelTitle->setText("¼«ËÙºÅÂëħ·½");
  23. //m_pLabelIcon->setPixmap(QPixmap(":/common/appicon"));
  24. m_pBtnMax = new XImageButton(QPixmap(":/sysButton/max_button"),this);
  25. m_pBtnMin = new XImageButton(QPixmap(":/sysButton/min_button"),this);
  26. m_pBtnClose = new XImageButton(QPixmap(":/sysButton/close_button"),this);
  27. m_pLayout = new QHBoxLayout(this);
  28. this->setMouseTracking(true);
  29. const QObjectList &objList = children();
  30. for(int nIndex=0; nIndex<objList.count();++nIndex)
  31. {
  32. if(0==qstrcmp(objList.at(nIndex)->metaObject()->className(),"XImageButton"))
  33. {
  34. // ((XImageButton*)(objList.at(nIndex)))->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
  35. // ((XImageButton*)(objList.at(nIndex)))->setFixedHeight(19);
  36. // ((XImageButton*)(objList.at(nIndex)))->setFixedWidth(29);
  37. connect(((XImageButton*)(objList.at(nIndex))),SIGNAL(clicked()),this,SLOT(slotOnBtnClick()));
  38. }
  39. }
  40. }
  41. void XTitleBar::initUI()
  42. {
  43. this->setLayout(m_pLayout);
  44. m_pLabelIcon->setMaximumSize(19,19);
  45. m_pLabelIcon->setFixedHeight(19);
  46. m_pLabelTitle->setFixedHeight(19);
  47. this->setFixedHeight(25);
  48. m_pLabelIcon->setScaledContents(true);
  49. m_pLabelIcon->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
  50. m_pLabelTitle->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
  51. m_pLabelTitle->setAlignment(Qt::AlignBottom);
  52. m_pLabelIcon->setAlignment(Qt::AlignBottom);
  53. m_pLayout->addWidget(m_pLabelIcon);
  54. m_pLayout->addWidget(m_pLabelTitle);
  55. m_pLayout->addStretch(1);
  56. m_pLayout->addWidget(m_pBtnMax);
  57. m_pLayout->addWidget(m_pBtnMin);
  58. m_pLayout->addWidget(m_pBtnClose);
  59. m_pLayout->setMargin(0);
  60. m_pLayout->setSpacing(0);
  61. setMouseTracking(true);
  62. this->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed);
  63. }
  64. void XTitleBar::mouseMoveEvent(QMouseEvent *e)
  65. {
  66. // setCursor(Qt::ArrowCursor);
  67. // if((e->buttons() == Qt::LeftButton) && m_mouseMoveWindowFlag)
  68. // {
  69. // static QWidget* parent_widget = this->parentWidget();
  70. // QPoint parent_point = parent_widget->pos();
  71. // parent_point.setX(parent_point.x() + e->x() - m_mouseSrcPos.x());
  72. // parent_point.setY(parent_point.y() + e->y() - m_mouseSrcPos.y());
  73. // parent_widget->move(parent_point);
  74. // }
  75. e->ignore();
  76. }
  77. void XTitleBar::mousePressEvent(QMouseEvent *e)
  78. {
  79. // m_mouseMoveWindowFlag = false;
  80. // if (e->button() == Qt::LeftButton)
  81. // {
  82. //// if(e->y()<TITLEBAR_MARGIN||e->x()<TITLEBAR_MARGIN||rect().width()-e->x()<TITLEBAR_MARGIN)
  83. //// {
  84. //// e->ignore();
  85. //// m_mouseMoveWindowFlag = false;
  86. //// return;
  87. //// }
  88. // m_mouseSrcPos = e->pos();
  89. // m_mouseMoveWindowFlag = true;
  90. // }
  91. // e->ignore();
  92. e->ignore();
  93. }
  94. void XTitleBar::mouseReleaseEvent(QMouseEvent *e)
  95. {
  96. // m_mouseMoveWindowFlag = false;
  97. // e->ignore();
  98. }
  99. void XTitleBar::mouseDoubleClickEvent(QMouseEvent *e)
  100. {
  101. e->ignore();
  102. }
  103. void XTitleBar::slotOnBtnClick()
  104. {
  105. XImageButton *pBtn = (XImageButton*)(sender());
  106. if(pBtn==m_pBtnMin)
  107. {
  108. emit signalMin();
  109. }
  110. if(pBtn==m_pBtnMax)
  111. {
  112. emit signalMaxRestore();
  113. }
  114. if(pBtn==m_pBtnClose)
  115. {
  116. emit signalClose();
  117. }
  118. }