mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 05:00:33 +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);
|
||||
}
|
||||
|
||||
/**
|
||||
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 deleteCategory();
|
||||
void deleteElement();
|
||||
void filter(const QString &);
|
||||
};
|
||||
#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);
|
||||
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);
|
||||
|
||||
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(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(customContextMenuRequested(const QPoint &)), this, SLOT(handleContextMenu(const QPoint &)));
|
||||
|
||||
@@ -66,6 +75,7 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
||||
vlayout -> setMargin(0);
|
||||
vlayout -> setSpacing(0);
|
||||
vlayout -> addWidget(toolbar);
|
||||
vlayout -> addLayout(hlayout);
|
||||
vlayout -> addWidget(elements_panel);
|
||||
vlayout -> setStretchFactor(elements_panel, 75000);
|
||||
setLayout(vlayout);
|
||||
|
||||
@@ -43,6 +43,7 @@ class ElementsPanelWidget : public QWidget {
|
||||
QAction *new_category, *edit_category, *delete_category;
|
||||
QAction *new_element, *edit_element, *delete_element;
|
||||
QMenu *context_menu;
|
||||
QLineEdit *filter_textfield;
|
||||
|
||||
// methodes
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user