Browse Source

Qt connection

isundil 9 months ago
parent
commit
3b84226f07
2 changed files with 15 additions and 3 deletions
  1. 4 1
      includes/breadcrumb.h
  2. 11 2
      src/breadcrumb.cpp

+ 4 - 1
includes/breadcrumb.h

@@ -5,7 +5,7 @@
 
 namespace craftlab::ui
 {
-	class QTWIDGETS_EXPORT Breadcrumb : virtual public QWidget
+	class QTWIDGETS_EXPORT Breadcrumb : public QWidget
 	{
 	Q_OBJECT
 	public:
@@ -15,6 +15,9 @@ namespace craftlab::ui
 		void addItem(const QString& label);
 		void addItem(const QIcon& icon, const QString& label);
 
+	signals:
+		void SelectionChanged(int index);
+
 	private:
 		void addItem(QListWidgetItem*);
 		QWidget* BuildItemWidget(const QListWidgetItem& item);

+ 11 - 2
src/breadcrumb.cpp

@@ -7,16 +7,25 @@ using namespace craftlab::ui;
 Breadcrumb::Breadcrumb(QWidget* parent): QWidget(parent), inner(std::make_unique<QListWidget>(this))
 {
 	new QVBoxLayout(this);
-	const auto _layout = layout();
-	inner->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 	layout()->setContentsMargins(0, 0, 0, 0);
 	layout()->addWidget(inner.get());
+	inner->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 	inner->setEditTriggers(QAbstractItemView::NoEditTriggers);
 	inner->setSelectionMode(QAbstractItemView::SingleSelection);
 	inner->setFlow(QListView::Flow::LeftToRight);
 	inner->setSizePolicy(QSizePolicy(QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Fixed));
 	inner->setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy::AdjustToContentsOnFirstShow);
 	inner->setUniformItemSizes(false);
+	connect(inner.get(), &QListWidget::itemSelectionChanged, this, [this]()
+	{
+		QList<QListWidgetItem*> selection = inner->selectedItems();
+		if (!selection.isEmpty())
+		{
+			QModelIndex index = inner->indexFromItem(selection.first());
+			if (index.isValid())
+				emit SelectionChanged(index.row());
+		}
+	});
 }
 
 void Breadcrumb::addItem(const QString& label)