TraceSelector: Add ability to add items with return

It's now possible to add items by selecting them in the AvailableTree
and pressing return to add them to the SelectedTree.
This commit is contained in:
2021-08-11 08:20:41 +02:00
parent cfe901afb1
commit 790435f32d
2 changed files with 39 additions and 4 deletions

View File

@@ -73,6 +73,34 @@ QStringList TraceAvailableTree::mimeTypes() const
return types;
}
void TraceAvailableTree::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Return)
{
for (unsigned int i = 0; i < topLevelItemCount(); i++)
{
auto currentItem = static_cast<TraceSelectorTreeItem *>(topLevelItem(i));
if (currentItem->isSelected())
{
auto clonedItem = new TraceSelectorTreeItem(*currentItem);
for (int i = 0; i < currentItem->childCount(); i++)
{
auto child = static_cast<TraceSelectorTreeItem *>(currentItem->child(i));
clonedItem->addChild(new TraceSelectorTreeItem(*child));
}
selectedTree->addTopLevelItem(clonedItem);
}
}
Q_EMIT selectedTree->itemsChanged();
}
QTreeWidget::keyPressEvent(event);
}
TraceSelectedTree::TraceSelectedTree(QWidget *parent) :
QTreeWidget(parent)
{
@@ -201,8 +229,8 @@ void TraceSelectedTree::keyPressEvent(QKeyEvent *event)
TraceSelector::TraceSelector(QWidget *parent) :
QWidget(parent), layout(new QVBoxLayout(this)),
availableTree(new TraceAvailableTree(this)),
selectedTree(new TraceSelectedTree(this))
selectedTree(new TraceSelectedTree(this)),
availableTree(new TraceAvailableTree(selectedTree, this))
{
QLabel *descriptionLabel = new QLabel();
descriptionLabel->setText(

View File

@@ -43,17 +43,24 @@
class TracePlot;
class TracePlotLine;
class TraceSelectedTree;
class QVBoxLayout;
class TraceAvailableTree : public QTreeWidget
{
Q_OBJECT
public:
explicit TraceAvailableTree(QWidget *parent = nullptr) : QTreeWidget(parent) {}
explicit TraceAvailableTree(TraceSelectedTree* selectedTree, QWidget *parent = nullptr) :
QTreeWidget(parent), selectedTree(selectedTree) {}
protected:
void keyPressEvent(QKeyEvent *event) override;
QMimeData *mimeData(const QList<QTreeWidgetItem *> items) const override;
QStringList mimeTypes() const override;
private:
TraceSelectedTree *selectedTree;
};
class TraceSelectedTree : public QTreeWidget
@@ -123,8 +130,8 @@ private:
TracePlot *traceplot;
QVBoxLayout *layout;
TraceAvailableTree *availableTree;
TraceSelectedTree *selectedTree;
TraceAvailableTree *availableTree;
};
#endif //TRACESELECTOR_H