class DirWidget: public QWidget {
Q_OBJECT
public:
DirWidget(QWidget *parent = 0);
virtual ~DirWidget();
void dir(QString str);
private:
QModelIndex index;
QVBoxLayout *layout;
QDirModel *model;
QTreeView *tree;
QCompleter *completer;
protected:
void mousePressEvent(QMouseEvent* event);
};
DirWidget::DirWidget(QWidget *parent) :
QWidget(parent) {
}
void DirWidget::dir(QString str) {
model = new QDirModel;
tree = new QTreeView();
model->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
tree->setModel(model);
tree->setSelectionMode(QAbstractItemView::SingleSelection);
index = model->index(str);
tree->setRootIndex(index);
tree->expand(index);
tree->scrollTo(index);
tree->setSelectionBehavior(QAbstractItemView::SelectItems);
tree->setColumnHidden(1, true);
tree->setColumnHidden(2, true);
tree->setColumnHidden(3, true);
layout = new QVBoxLayout;
layout->addWidget(tree);
setLayout(layout);
}
void DirWidget::mousePressEvent(QMouseEvent* event) {
if (event->button() == Qt::LeftButton) {
QModelIndex aaa = tree->currentIndex();
qDebug() << aaa;
} else {
QWidget::mousePressEvent(event);
}
}
DirWidget::~DirWidget() {
// TODO Auto-generated destructor stub
}
这是书上的例子,我加了一个鼠标事件,可是这个事件在鼠标点击到tree上的时候没有响应,麻烦高手指点一下~