LINUX.ORG.RU

[Qt] QDir + QTreeView

 


0

0

В сабжевой связке можно вообще как-нибудь получить сигнал об изменении выделения?
itemSelectionChanged() не срабатывает, несмотря на то, что QTreeView наследуется от QTreeWidget, который в свою очередь имеет такой сигнал.

> QTreeView наследуется от QTreeWidget

наоборот

> В сабжевой связке можно вообще как-нибудь получить сигнал об изменении выделения?

я хз как вы собираетесь связывать QDir с QTreeView (может, QDirModel + QTreeView?), но, как вариант, можете создать свой класс, унаследовав его от QTreeView, и т.о. получить доступ к protected сигналу currentChanged().

arsi ★★★★★
()
Ответ на: комментарий от arsi

>protected сигналу currentChanged().

Это слот.

После задания модели, соединяйся с сигналом QItemSelectionModel::selectionChanged(), т.е.: 

connect( selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)
), this, SLOT(slt()) )

summatus
()
Ответ на: комментарий от arsi

> я хз как вы собираетесь связывать QDir с QTreeView (может, QDirModel + QTreeView?)

Да-да, именно QDirModel - извините, описался.

> наоборот


Oh, f*ck.

I_am_milk
() автор топика
Ответ на: комментарий от summatus

> После задания модели, соединяйся с сигналом QItemSelectionModel::selectionChanged()...

Спасибо, попробую.

I_am_milk
() автор топика
Ответ на: комментарий от summatus

> Это слот.

угу, но я не его имел в виду.

arsi ★★★★★
()

test.h:
-----8<-----8<-----8<-----8<-----8<-----8<-----
#include <QObject>                                               
#include <QTreeView>                                             

class TestView : public QTreeView {
    Q_OBJECT
protected:
    virtual void currentChanged(const QModelIndex &current, const QModelIndex &previous);
};
-----8<-----8<-----8<-----8<-----8<-----8<-----

test.cpp:
-----8<-----8<-----8<-----8<-----8<-----8<-----
#include <QtGui>
#include "test.h"

void TestView::currentChanged(const QModelIndex &current, const QModelIndex &previous) {
    QTreeView::currentChanged(current, previous);
    QStringList path;
    for (QModelIndex p = current; p.isValid(); p = p.parent())
        path.insert(0, p.data().toString());
    if (path.size() && path.first() == "/")
        path.removeFirst();
    qDebug(">> /%s", path.join("/").toUtf8().data());
}

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QDirModel *model = new QDirModel;
    QTreeView *tree = new TestView;
    tree->setModel(model);
    tree->show();
    return app.exec();
}
-----8<-----8<-----8<-----8<-----8<-----8<-----

test.pro:
-----8<-----8<-----8<-----8<-----8<-----8<-----
TEMPLATE=app
SOURCES=test.cpp
HEADERS=test.h

arsi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.