PagingWidget.cpp 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. #include "PagingWidget.h"
  2. #include "ui_PagingWidget.h"
  3. #include <QDebug>
  4. #include "CAppInfo.h"
  5. PagingWidget::PagingWidget(QWidget *parent) :
  6. QWidget(parent),
  7. ui(new Ui::PagingWidget)
  8. {
  9. ui->setupUi(this);
  10. initPages(7);
  11. }
  12. PagingWidget::~PagingWidget()
  13. {
  14. delete ui;
  15. }
  16. void PagingWidget::setUI(const int nX, const int nY)
  17. {
  18. setGeometry(nX, nY, g_appInfoPtr->m_fRate*350, g_appInfoPtr->m_fRate*30);
  19. ui->btn_previous->setGeometry(0, 0, g_appInfoPtr->m_fRate*30, g_appInfoPtr->m_fRate*30);
  20. for(int i = 0; i < m_nLimitPage; i++)
  21. {
  22. QPushButton* btn = QWidget::findChild<QPushButton*>(QString("btn_page%1").arg(i+1));
  23. if(btn)
  24. {
  25. btn->setGeometry(ui->btn_previous->x() + (ui->btn_previous->width() + g_appInfoPtr->m_fRate*10)*(i+ 1),
  26. ui->btn_previous->y(), ui->btn_previous->width(), ui->btn_previous->height());
  27. }
  28. }
  29. ui->btn_next->setGeometry(ui->btn_page7->x() + ui->btn_previous->width() + g_appInfoPtr->m_fRate*10,
  30. ui->btn_previous->y(), ui->btn_previous->width(), ui->btn_previous->height());
  31. }
  32. void PagingWidget::setMaxPageSize(int nMaxSize)
  33. {
  34. initPages(nMaxSize);
  35. }
  36. void PagingWidget::initPages(const int nMaxSize)
  37. {
  38. m_nMaxPageSize = nMaxSize;
  39. m_nCurrentPage = 1;
  40. initPageCtrl(1);
  41. /*
  42. m_nCurrentPage = 1;
  43. if(nMaxSize <= m_nLimitPage)
  44. {
  45. bool bSetNextGeometry = false;
  46. for(int i = 0; i < m_nLimitPage; i++)
  47. {
  48. QPushButton* btn = QWidget::findChild<QPushButton*>(QString("btn_page%1").arg(i+1));
  49. if(btn)
  50. {
  51. if(i < nMaxSize)
  52. {
  53. btn->setVisible(true);
  54. btn->setText(QString::number(i+1));
  55. }
  56. else
  57. {
  58. btn->setVisible(false);
  59. if(!bSetNextGeometry)
  60. {
  61. ui->btn_next->setGeometry(btn->x(), btn->y(),
  62. ui->btn_next->width(), ui->btn_next->height());
  63. bSetNextGeometry = true;
  64. }
  65. }
  66. }
  67. }
  68. }
  69. else
  70. {
  71. for(int i = 0; i < m_nLimitPage - 2; i++)
  72. {
  73. QPushButton* btn = QWidget::findChild<QPushButton*>(QString("btn_page%1").arg(i+1));
  74. if(btn)
  75. {
  76. btn->setVisible(true);
  77. btn->setText(QString::number(i+1));
  78. }
  79. }
  80. ui->btn_page6->setText(QString("..."));
  81. ui->btn_page7->setText(QString::number(nMaxSize));
  82. }*/
  83. }
  84. void PagingWidget::initPageCtrl(const int nCurPage)
  85. {
  86. ui->btn_next->setGeometry(ui->btn_page7->x() + ui->btn_previous->width() + g_appInfoPtr->m_fRate*10,
  87. ui->btn_previous->y(), ui->btn_previous->width(), ui->btn_previous->height());
  88. if(m_nMaxPageSize <= m_nLimitPage)
  89. {
  90. bool bSetNextGeometry = false;
  91. for(int i = 0; i < m_nLimitPage; i++)
  92. {
  93. QPushButton* btn = QWidget::findChild<QPushButton*>(QString("btn_page%1").arg(i+1));
  94. if(btn)
  95. {
  96. if(i < m_nMaxPageSize)
  97. {
  98. btn->setVisible(true);
  99. btn->setText(QString::number(i+1));
  100. }
  101. else
  102. {
  103. btn->setVisible(false);
  104. if(!bSetNextGeometry)
  105. {
  106. ui->btn_next->setGeometry(btn->x(), btn->y(),
  107. ui->btn_next->width(), ui->btn_next->height());
  108. bSetNextGeometry = true;
  109. }
  110. }
  111. }
  112. }
  113. }
  114. else if(m_nCurrentPage < 6)
  115. {
  116. for(int i = 0; i < m_nLimitPage - 2; i++)
  117. {
  118. QPushButton* btn = QWidget::findChild<QPushButton*>(QString("btn_page%1").arg(i+1));
  119. if(btn)
  120. {
  121. btn->setVisible(true);
  122. btn->setText(QString::number(i+1));
  123. }
  124. }
  125. ui->btn_page6->setVisible(true);
  126. ui->btn_page7->setVisible(true);
  127. ui->btn_page6->setText(QString("..."));
  128. ui->btn_page7->setText(QString::number(m_nMaxPageSize));
  129. }
  130. else if(m_nMaxPageSize - m_nCurrentPage > 3)
  131. {
  132. for(int i = 0; i < m_nLimitPage - 2; i++)
  133. {
  134. QPushButton* btn = QWidget::findChild<QPushButton*>(QString("btn_page%1").arg(i+1));
  135. if(btn)
  136. {
  137. btn->setVisible(true);
  138. btn->setText(QString::number(m_nCurrentPage - 4 + i+1));
  139. }
  140. }
  141. ui->btn_page6->setVisible(true);
  142. ui->btn_page7->setVisible(true);
  143. ui->btn_page6->setText(QString("..."));
  144. ui->btn_page7->setText(QString::number(m_nMaxPageSize));
  145. }
  146. else
  147. {
  148. for(int i = 0; i < m_nLimitPage; i++)
  149. {
  150. QPushButton* btn = QWidget::findChild<QPushButton*>(QString("btn_page%1").arg(i+1));
  151. if(btn)
  152. {
  153. btn->setVisible(true);
  154. btn->setText(QString::number(m_nMaxPageSize - 7 + i + 1));
  155. }
  156. }
  157. }
  158. for(int i = 0; i < m_nLimitPage; i++)
  159. {
  160. QPushButton* btn = QWidget::findChild<QPushButton*>(QString("btn_page%1").arg(i+1));
  161. if(btn)
  162. {
  163. if(btn->text() != "..." &&
  164. btn->text().toInt() == m_nCurrentPage)
  165. {
  166. btn->setStyleSheet(QString("QPushButton {\
  167. background:rgba(100, 153, 218,1);\
  168. font-size:%1px;\
  169. font-family:\"Microsoft YaHei\";\
  170. font-weight:600;\
  171. color: rgba(255, 255, 255, 1);\
  172. border-radius:%2px;}").arg((int)(g_appInfoPtr->m_fRate*12)).arg((int)(g_appInfoPtr->m_fRate*4))) ;
  173. }
  174. else
  175. {
  176. btn->setStyleSheet(QString("QPushButton {\
  177. background:rgba(255, 255, 255,1);\
  178. font-size:%1px;\
  179. font-family:\"Microsoft YaHei\";\
  180. font-weight:400;\
  181. color: rgba(75, 82, 96, 1);\
  182. border: %2px solid rgba(204, 211, 224, 1);\
  183. border-radius:%3px;}").arg((int)(g_appInfoPtr->m_fRate*12))
  184. .arg((int)(g_appInfoPtr->m_fRate)).arg((int)(g_appInfoPtr->m_fRate*4))) ;
  185. }
  186. }
  187. }
  188. ui->btn_previous->setStyleSheet(QString("QPushButton {\
  189. background:rgba(255, 255, 255,1);\
  190. font-size:%1px;\
  191. font-family:\"Microsoft YaHei\";\
  192. font-weight:400;\
  193. color: rgba(75, 82, 96, 1);\
  194. border: %2px solid rgba(204, 211, 224, 1);\
  195. border-radius:%3px;}").arg((int)(g_appInfoPtr->m_fRate*12)).arg((int)(g_appInfoPtr->m_fRate)).arg((int)(g_appInfoPtr->m_fRate*4))) ;
  196. ui->btn_next->setStyleSheet(QString("QPushButton {\
  197. background:rgba(255, 255, 255,1);\
  198. font-size:%1px;\
  199. font-family:\"Microsoft YaHei\";\
  200. font-weight:400;\
  201. color: rgba(75, 82, 96, 1);\
  202. border: %2px solid rgba(204, 211, 224, 1);\
  203. border-radius:%3px;}").arg((int)(g_appInfoPtr->m_fRate*12)).arg((int)(g_appInfoPtr->m_fRate)).arg((int)(g_appInfoPtr->m_fRate*4))) ;
  204. }
  205. void PagingWidget::setCurPage(const int nCurPage)
  206. {
  207. if(m_nCurrentPage != nCurPage)
  208. {
  209. m_nCurrentPage = nCurPage;
  210. initPageCtrl(m_nCurrentPage);
  211. qDebug()<<m_nCurrentPage;
  212. emit pageChanged(m_nCurrentPage);
  213. }
  214. }
  215. void PagingWidget::on_btn_previous_clicked()
  216. {
  217. if(m_nCurrentPage > 1)
  218. {
  219. setCurPage(m_nCurrentPage - 1);
  220. }
  221. }
  222. void PagingWidget::on_btn_page1_clicked()
  223. {
  224. setCurPage(ui->btn_page1->text().toInt());
  225. }
  226. void PagingWidget::on_btn_page2_clicked()
  227. {
  228. setCurPage(ui->btn_page2->text().toInt());
  229. }
  230. void PagingWidget::on_btn_page3_clicked()
  231. {
  232. setCurPage(ui->btn_page3->text().toInt());
  233. }
  234. void PagingWidget::on_btn_page4_clicked()
  235. {
  236. setCurPage(ui->btn_page4->text().toInt());
  237. }
  238. void PagingWidget::on_btn_page5_clicked()
  239. {
  240. setCurPage(ui->btn_page5->text().toInt());
  241. }
  242. void PagingWidget::on_btn_page6_clicked()
  243. {
  244. if(ui->btn_page6->text() == "...")
  245. {
  246. setCurPage(ui->btn_page5->text().toInt() + 1);
  247. }
  248. else
  249. {
  250. setCurPage(ui->btn_page6->text().toInt());
  251. }
  252. }
  253. void PagingWidget::on_btn_page7_clicked()
  254. {
  255. setCurPage(ui->btn_page7->text().toInt());
  256. }
  257. void PagingWidget::on_btn_next_clicked()
  258. {
  259. if(m_nCurrentPage < m_nMaxPageSize)
  260. {
  261. setCurPage(m_nCurrentPage + 1);
  262. }
  263. }