ExpertListWidget.cpp 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "ExpertListWidget.h"
  2. #include <Common/Icon.h>
  3. #include <QBoxLayout>
  4. #include <QListWidget>
  5. #include <QLabel>
  6. #include <QDebug>
  7. ExpertListWidget::ExpertListWidget(QWidget *parent) : QWidget(parent)
  8. {
  9. initialize();
  10. initLayout();
  11. connectSignalsAndSlots();
  12. refreshList();
  13. }
  14. void ExpertListWidget::refreshList()
  15. {
  16. m_listWidget->clear();
  17. for (int i = 1; i <= 100; 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));
  27. idx->setFixedWidth(20);
  28. hBox->addWidget(idx);
  29. hBox->addSpacing(10);
  30. QLabel *name = new QLabel(QString("专家%1").arg(i));
  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 *)
  60. {
  61. emit siganlItemDoubleClicked();
  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. }