#include "ExpertListWidget.h" #include #include #include #include #include ExpertListWidget::ExpertListWidget(QWidget *parent) : QWidget(parent) { initialize(); initLayout(); connectSignalsAndSlots(); refreshList(); } void ExpertListWidget::refreshList() { m_expertListWidget->clear(); for (int i = 1; i <= 100; i++) { QListWidgetItem *item = new QListWidgetItem; item->setSizeHint(QSize(200, 60)); m_expertListWidget->addItem(item); QWidget *w = new QWidget(); m_expertListWidget->setItemWidget(item, w); QHBoxLayout *hBox = new QHBoxLayout(w); hBox->setSpacing(0); hBox->setMargin(10); QLabel *idx = new QLabel(QString::number(i)); idx->setFixedWidth(20); hBox->addWidget(idx); hBox->addSpacing(10); QLabel *name = new QLabel(QString("专家%1").arg(i)); hBox->addWidget(name); hBox->addStretch(); } } bool ExpertListWidget::isItemSelected() const { return m_expertListWidget->selectedItems().count() > 0; } void ExpertListWidget::initialize() { m_vBoxLayout = new QVBoxLayout(this); m_expertListWidget = new QListWidget(this); m_expertListWidget->setAlternatingRowColors(true); m_expertListWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, " "255);alternate-background-color: rgb(244, 244, 255);}"); } void ExpertListWidget::initLayout() { m_vBoxLayout->addWidget(m_expertListWidget); } void ExpertListWidget::connectSignalsAndSlots() { connect(m_expertListWidget, &QListWidget::itemDoubleClicked, this, &ExpertListWidget::slotItemDoubleClicked); connect(m_expertListWidget, &QListWidget::itemClicked, this, &ExpertListWidget::slotItemClicked); connect(m_expertListWidget, &QListWidget::currentItemChanged, this, &ExpertListWidget::slotCurrentItemChanged); connect(m_expertListWidget, &QListWidget::currentRowChanged, this, &ExpertListWidget::slotCurrentRowChanged); connect(m_expertListWidget, &QListWidget::itemSelectionChanged, this, &ExpertListWidget::slotItemSelectionChanged); } void ExpertListWidget::slotItemDoubleClicked(QListWidgetItem *) { emit siganlItemDoubleClicked(); } void ExpertListWidget::slotItemClicked(QListWidgetItem *) { qDebug() << __FUNCTION__ << __LINE__; } void ExpertListWidget::slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) { qDebug() << __FUNCTION__ << __LINE__ << current << previous; } void ExpertListWidget::slotCurrentRowChanged(int currentRow) { qDebug() << __FUNCTION__ << __LINE__ << currentRow; } void ExpertListWidget::slotItemSelectionChanged() { qDebug() << __FUNCTION__ << __LINE__ << m_expertListWidget->selectedItems(); emit signalSelectionChanged(); }