PDA

View Full Version : QTreeWidget Horizontal header double click event???



deepal_de
3rd June 2011, 11:08
Hello,

any1 know how to catch "QTreeWidget Horizontal header double click event"?
this is my QtreeWidget, what i wont is when i double click on horizontal header item, Tree should check all the item in that selected column ..
any ideas ??

.H fie


ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void initTree();

private:
Ui::MainWindow *ui;

private slots:

};

#endif // MAINWINDOW_H


.CPP file


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include "MyStyle.h"
#include <QMultiMap>

QTreeWidget* pTree;
QList<QTreeWidgetItem*> lstWidgets;
QList<QTreeWidgetItem*> lstSubItems;


MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
pTree = NULL;
initTree();
QSize size(540,870);
this->resize(size);
this->setMinimumSize(size);
this->setMaximumSize(size);
ui->gridLayout->addWidget(pTree);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::initTree()
{
pTree = new QTreeWidget(this);
pTree->setGeometry(10,10,520,850);
pTree->setMaximumSize(520,850);
pTree->show();

QStringList lstheadrs;
lstheadrs.append(" \n \n \n \n \n \n ");
lstheadrs.append("1");
lstheadrs.append("2");
lstheadrs.append("3");
lstheadrs.append("4");
lstheadrs.append("5");
lstheadrs.append("6");
lstheadrs.append("7");
lstheadrs.append("8");
lstheadrs.append("9");
lstheadrs.append("10");
lstheadrs.append("11");
lstheadrs.append("12");
pTree->setHeaderLabels(lstheadrs);
//------SET COLUMN WIDTH---------------
pTree->setColumnWidth(0,190);
for(int i = 1; i<=12; i++)
{
pTree->setColumnWidth(i,25);
}
MyStyle *headerStyl = new MyStyle(this->style());
pTree->setStyle(headerStyl);

//================================================== ================================================== ======//
QTreeWidgetItem *Node1 = new QTreeWidgetItem(pTree, QStringList(QObject::tr("1")));
Node1->addChild(new QTreeWidgetItem(QStringList(QObject::tr("1.1"))));
Node1->addChild(new QTreeWidgetItem(QStringList(QObject::tr("1.2"))));
Node1->addChild(new QTreeWidgetItem(QStringList(QObject::tr("1.3"))));
pTree->expandItem(Node1);
for(int iChild=0; iChild<Node1->childCount() ; iChild++)
for(int i=1; i<lstheadrs.length(); i++)
Node1->child(iChild)->setCheckState(i,Qt::Unchecked);

lstWidgets.append(Node1);
//================================================== ================================================== ======//
QTreeWidgetItem *Node2 = new QTreeWidgetItem(pTree, QStringList(QObject::tr("2")));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.1"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.2"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.3"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.4"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.5"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.6"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.7"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.8"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.9"))));
Node2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("2.10"))));
pTree->expandItem(Node2);
for(int iChild=0; iChild<Node2->childCount() ; iChild++)
for(int i=1; i<lstheadrs.length(); i++)
Node2->child(iChild)->setCheckState(i,Qt::Unchecked);

lstWidgets.append(Node2);
//================================================== ================================================== ======//
QTreeWidgetItem *Node3 = new QTreeWidgetItem(pTree,QStringList(QObject::tr("3")));

QTreeWidgetItem *node3sub1 = new QTreeWidgetItem(Node3, QStringList(QObject::tr("3.1")));
node3sub1->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.1.1"))));
node3sub1->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.1.2"))));
node3sub1->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.1.3"))));
Node3->addChild(node3sub1);
for(int iChild=0; iChild<node3sub1->childCount(); iChild++)
for(int i=1; i<lstheadrs.length(); i++)
node3sub1->child(iChild)->setCheckState(i,Qt::Unchecked);

QTreeWidgetItem *node3sub2 = new QTreeWidgetItem(Node3, QStringList(QObject::tr("3.2")));
node3sub2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.2.1"))));
node3sub2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.2.2"))));
node3sub2->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.2.3"))));
Node3->addChild(node3sub2);
for(int iChild=0; iChild<node3sub2->childCount(); ++iChild)
for(int i=1; i<lstheadrs.length(); i++)
node3sub2->child(iChild)->setCheckState(i,Qt::Unchecked);

QTreeWidgetItem *node3sub3 = new QTreeWidgetItem(Node3, QStringList(QObject::tr("3.3")));
node3sub3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.3.1"))));
node3sub3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.3.2"))));
node3sub3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.3.3"))));
Node3->addChild(node3sub3);
for(int iChild=0; iChild<node3sub3->childCount(); iChild++)
for(int i=1; i<lstheadrs.length(); i++)
node3sub3->child(iChild)->setCheckState(i,Qt::Unchecked);


Node3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.4"))));
Node3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.5"))));
Node3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.6"))));
Node3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.7"))));
Node3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.8"))));
Node3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.9"))));
Node3->addChild(new QTreeWidgetItem(QStringList(QObject::tr("3.10"))));

pTree->expandItem(Node3);
for(int iChild=0; iChild<Node3->childCount() ; iChild++)
for(int i=1; i<lstheadrs.length(); i++)
Node3->child(iChild)->setCheckState(i,Qt::Unchecked);

lstWidgets.append(Node3);
lstWidgets.append(node3sub1);
lstWidgets.append(node3sub2);
lstWidgets.append(node3sub3);
//================================================== ================================================== ======//
QTreeWidgetItem *node4 = new QTreeWidgetItem(pTree, QStringList(QObject::tr("4")));
node4->addChild(new QTreeWidgetItem(QStringList(QObject::tr("4.1"))));
node4->addChild(new QTreeWidgetItem(QStringList(QObject::tr("4.2"))));
pTree->expandItem(node4);
for(int iChild=0; iChild<node4->childCount() ; iChild++)
for(int i=1; i<lstheadrs.length(); i++)
node4->child(iChild)->setCheckState(i,Qt::Unchecked);

lstWidgets.append(node4);
//================================================== ================================================== ======//
QTreeWidgetItem *node5 = new QTreeWidgetItem(pTree, QStringList(QObject::tr("5")));
node5->addChild(new QTreeWidgetItem(QStringList(QObject::tr("5.1"))));
node5->addChild(new QTreeWidgetItem(QStringList(QObject::tr("5.2"))));
node5->addChild(new QTreeWidgetItem(QStringList(QObject::tr("5.3"))));
node5->addChild(new QTreeWidgetItem(QStringList(QObject::tr("5.4"))));
pTree->expandItem(node5);
for(int iChild=0; iChild<node5->childCount() ; iChild++)
for(int i=1; i<lstheadrs.length(); i++)
node5->child(iChild)->setCheckState(i,Qt::Unchecked);

lstWidgets.append(node5);
}

deepal_de
3rd June 2011, 19:00
hope this does not mean that there is no way to do this.

Lykurg
3rd June 2011, 20:30
What's about the signal QHeaderView::sectionDoubleClicked()?

deepal_de
6th June 2011, 09:31
Thanks
answer



// pTee is the QTreeWidget

bConnect = connect( pTree->header(), SIGNAL( sectionDoubleClicked(int) ), this, SLOT( treeHeaderDoubleClick(int) ) );

treeHeaderDoubleClick(int)
{
// What ever you wont to do in click this event
}