ExpertListWidget.cpp 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #include "ExpertListWidget.h"
  2. #include <dbService/ClassSet.h>
  3. #include <Common/Icon.h>
  4. #include <QBoxLayout>
  5. #include <QListWidget>
  6. #include <QLabel>
  7. #include <QDebug>
  8. ExpertListWidget::ExpertListWidget(QWidget *parent) : QWidget(parent)
  9. {
  10. initialize();
  11. initLayout();
  12. connectSignalsAndSlots();
  13. }
  14. void ExpertListWidget::showUsers(QList<QFUser *> list)
  15. {
  16. m_listWidget->clear();
  17. for (int i = 0; i < list.count(); i++) {
  18. QListWidgetItem *item = new QListWidgetItem;
  19. item->setSizeHint(QSize(200, 60));
  20. m_listWidget->addItem(item);
  21. QWidget *w = new QWidget();
  22. m_listWidget->setItemWidget(item, w);
  23. QHBoxLayout *hBox = new QHBoxLayout(w);
  24. hBox->setSpacing(0);
  25. hBox->setMargin(10);
  26. QLabel *idx = new QLabel(QString::number(i + 1));
  27. idx->setFixedWidth(20);
  28. hBox->addWidget(idx);
  29. hBox->addSpacing(10);
  30. QLabel *name = new QLabel(list[i]->userName);
  31. hBox->addWidget(name);
  32. hBox->addStretch();
  33. }
  34. }
  35. bool ExpertListWidget::isItemSelected() const
  36. {
  37. return m_listWidget->selectedItems().count() > 0;
  38. }
  39. void ExpertListWidget::initialize()
  40. {
  41. m_vBoxLayout = new QVBoxLayout(this);
  42. m_listWidget = new QListWidget(this);
  43. m_listWidget->setAlternatingRowColors(true);
  44. m_listWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
  45. "255);alternate-background-color: rgb(244, 244, 255);}");
  46. }
  47. void ExpertListWidget::initLayout()
  48. {
  49. m_vBoxLayout->addWidget(m_listWidget);
  50. }
  51. void ExpertListWidget::connectSignalsAndSlots()
  52. {
  53. connect(m_listWidget, &QListWidget::itemDoubleClicked, this, &ExpertListWidget::slotItemDoubleClicked);
  54. connect(m_listWidget, &QListWidget::itemClicked, this, &ExpertListWidget::slotItemClicked);
  55. connect(m_listWidget, &QListWidget::currentItemChanged, this, &ExpertListWidget::slotCurrentItemChanged);
  56. connect(m_listWidget, &QListWidget::currentRowChanged, this, &ExpertListWidget::slotCurrentRowChanged);
  57. connect(m_listWidget, &QListWidget::itemSelectionChanged, this, &ExpertListWidget::slotItemSelectionChanged);
  58. }
  59. void ExpertListWidget::slotItemDoubleClicked(QListWidgetItem *item)
  60. {
  61. emit siganlItemDoubleClicked(m_listWidget->row(item));
  62. }
  63. void ExpertListWidget::slotItemClicked(QListWidgetItem *)
  64. {
  65. qDebug() << __FUNCTION__ << __LINE__;
  66. }
  67. void ExpertListWidget::slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
  68. {
  69. qDebug() << __FUNCTION__ << __LINE__ << current << previous;
  70. }
  71. void ExpertListWidget::slotCurrentRowChanged(int currentRow)
  72. {
  73. qDebug() << __FUNCTION__ << __LINE__ << currentRow;
  74. }
  75. void ExpertListWidget::slotItemSelectionChanged()
  76. {
  77. qDebug() << __FUNCTION__ << __LINE__ << m_listWidget->selectedItems();
  78. emit signalSelectionChanged();
  79. }