ExpertListWidget.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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::hasSelectedItem() const
  36. {
  37. return m_listWidget->selectedItems().count() > 0;
  38. }
  39. int ExpertListWidget::selectedRow() const
  40. {
  41. QListWidgetItem *item = m_listWidget->selectedItems().first();
  42. return m_listWidget->row(item);
  43. }
  44. void ExpertListWidget::initialize()
  45. {
  46. m_vBoxLayout = new QVBoxLayout(this);
  47. m_listWidget = new QListWidget(this);
  48. m_listWidget->setAlternatingRowColors(true);
  49. m_listWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
  50. "255);alternate-background-color: rgb(244, 244, 255);}");
  51. }
  52. void ExpertListWidget::initLayout()
  53. {
  54. m_vBoxLayout->addWidget(m_listWidget);
  55. }
  56. void ExpertListWidget::connectSignalsAndSlots()
  57. {
  58. connect(m_listWidget, &QListWidget::itemDoubleClicked, this, &ExpertListWidget::slotItemDoubleClicked);
  59. connect(m_listWidget, &QListWidget::itemClicked, this, &ExpertListWidget::slotItemClicked);
  60. connect(m_listWidget, &QListWidget::currentItemChanged, this, &ExpertListWidget::slotCurrentItemChanged);
  61. connect(m_listWidget, &QListWidget::currentRowChanged, this, &ExpertListWidget::slotCurrentRowChanged);
  62. connect(m_listWidget, &QListWidget::itemSelectionChanged, this, &ExpertListWidget::slotItemSelectionChanged);
  63. }
  64. void ExpertListWidget::slotItemDoubleClicked(QListWidgetItem *item)
  65. {
  66. emit siganlItemDoubleClicked(m_listWidget->row(item));
  67. }
  68. void ExpertListWidget::slotItemClicked(QListWidgetItem *)
  69. {
  70. qDebug() << __FUNCTION__ << __LINE__;
  71. }
  72. void ExpertListWidget::slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
  73. {
  74. qDebug() << __FUNCTION__ << __LINE__ << current << previous;
  75. }
  76. void ExpertListWidget::slotCurrentRowChanged(int currentRow)
  77. {
  78. qDebug() << __FUNCTION__ << __LINE__ << currentRow;
  79. }
  80. void ExpertListWidget::slotItemSelectionChanged()
  81. {
  82. qDebug() << __FUNCTION__ << __LINE__ << m_listWidget->selectedItems();
  83. emit signalSelectionChanged();
  84. }