mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 22:00:35 +01:00
Ajout d'un champ de texte pour filtrer le contenu du panel d'elements
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@255 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -344,3 +344,29 @@ QTreeWidgetItem *ElementsPanel::findFile(const QString &file) const {
|
|||||||
}
|
}
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
N'affiche que les elements contenant une chaine donnee
|
||||||
|
@param m Chaine a filtrer
|
||||||
|
*/
|
||||||
|
void ElementsPanel::filter(const QString &m) {
|
||||||
|
QList<QTreeWidgetItem *> items = findItems("*", Qt::MatchRecursive | Qt::MatchWildcard);
|
||||||
|
if (m.isEmpty()) {
|
||||||
|
foreach(QTreeWidgetItem *item, items) item -> setHidden(false);
|
||||||
|
} else {
|
||||||
|
foreach(QTreeWidgetItem *item, items) {
|
||||||
|
QString file = item -> data(0, 42).toString();
|
||||||
|
bool item_matches = item -> text(0).contains(m, Qt::CaseInsensitive);
|
||||||
|
item -> setHidden(!item_matches);
|
||||||
|
if (item_matches) {
|
||||||
|
// remonte l'arborescence pour afficher les categories contenant l'element
|
||||||
|
QTreeWidgetItem *parent_qtwi = item -> parent();
|
||||||
|
while(parent_qtwi && (parent_qtwi -> isHidden() || !parent_qtwi -> isExpanded())) {
|
||||||
|
parent_qtwi -> setHidden(false);
|
||||||
|
parent_qtwi -> setExpanded(true);
|
||||||
|
parent_qtwi = parent_qtwi -> parent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -61,5 +61,6 @@ class ElementsPanel : public QTreeWidget {
|
|||||||
void editElement();
|
void editElement();
|
||||||
void deleteCategory();
|
void deleteCategory();
|
||||||
void deleteElement();
|
void deleteElement();
|
||||||
|
void filter(const QString &);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -35,6 +35,13 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
|||||||
edit_element = new QAction(QIcon(":/ico/edit.png"), tr("\311diter l'\351l\351ment"), this);
|
edit_element = new QAction(QIcon(":/ico/edit.png"), tr("\311diter l'\351l\351ment"), this);
|
||||||
delete_element = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer l'\351l\351ment"), this);
|
delete_element = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer l'\351l\351ment"), this);
|
||||||
|
|
||||||
|
// initialise le champ de texte pour filtrer avec une disposition horizontale
|
||||||
|
QLabel *filter_label = new QLabel(tr("Filtrer : "), this);
|
||||||
|
filter_textfield = new QLineEdit(this);
|
||||||
|
QHBoxLayout *hlayout = new QHBoxLayout();
|
||||||
|
hlayout -> addWidget(filter_label);
|
||||||
|
hlayout -> addWidget(filter_textfield);
|
||||||
|
|
||||||
context_menu = new QMenu(this);
|
context_menu = new QMenu(this);
|
||||||
|
|
||||||
connect(reload, SIGNAL(triggered()), elements_panel, SLOT(reload()));
|
connect(reload, SIGNAL(triggered()), elements_panel, SLOT(reload()));
|
||||||
@@ -45,6 +52,8 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
|||||||
connect(edit_element, SIGNAL(triggered()), elements_panel, SLOT(editElement()));
|
connect(edit_element, SIGNAL(triggered()), elements_panel, SLOT(editElement()));
|
||||||
connect(delete_element, SIGNAL(triggered()), elements_panel, SLOT(deleteElement()));
|
connect(delete_element, SIGNAL(triggered()), elements_panel, SLOT(deleteElement()));
|
||||||
|
|
||||||
|
connect(filter_textfield, SIGNAL(textEdited(const QString &)), elements_panel, SLOT(filter(const QString &)));
|
||||||
|
|
||||||
connect(elements_panel, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(updateButtons()));
|
connect(elements_panel, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(updateButtons()));
|
||||||
connect(elements_panel, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(handleContextMenu(const QPoint &)));
|
connect(elements_panel, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(handleContextMenu(const QPoint &)));
|
||||||
|
|
||||||
@@ -66,6 +75,7 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
|||||||
vlayout -> setMargin(0);
|
vlayout -> setMargin(0);
|
||||||
vlayout -> setSpacing(0);
|
vlayout -> setSpacing(0);
|
||||||
vlayout -> addWidget(toolbar);
|
vlayout -> addWidget(toolbar);
|
||||||
|
vlayout -> addLayout(hlayout);
|
||||||
vlayout -> addWidget(elements_panel);
|
vlayout -> addWidget(elements_panel);
|
||||||
vlayout -> setStretchFactor(elements_panel, 75000);
|
vlayout -> setStretchFactor(elements_panel, 75000);
|
||||||
setLayout(vlayout);
|
setLayout(vlayout);
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class ElementsPanelWidget : public QWidget {
|
|||||||
QAction *new_category, *edit_category, *delete_category;
|
QAction *new_category, *edit_category, *delete_category;
|
||||||
QAction *new_element, *edit_element, *delete_element;
|
QAction *new_element, *edit_element, *delete_element;
|
||||||
QMenu *context_menu;
|
QMenu *context_menu;
|
||||||
|
QLineEdit *filter_textfield;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
|
|||||||
Reference in New Issue
Block a user