2010-12-06 3 views
4

QTreeViewのテキストをダブルクリックすると子が展開されますが、シングルクリックは展開されません。 CSSで定義されたアイコン(テキストの左に配置されている)は、子供をシングルクリックで拡張します。テキストのワンクリック(またはタッチイベント)によって子どもが拡大されるようにするにはどうすればよいですか?Qt - ワンクリックでQTreeViewを展開しますか?

bookTreeView->setModel(standardModel); 
    bookTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers); 
    bookTreeView->setWordWrap(true); 
    bookTreeView->sizeHint(); 
    //bookTreeView->mousePressEvent(QMouseEvent()); 
    bookTreeView->setTextElideMode(Qt::ElideNone); 
    bookTreeView->setExpandsOnDoubleClick(true); 
    bookTreeView->setUniformRowHeights(true); 
    bookTreeView->setHeaderHidden(true); 
    bookTreeView->setStyleSheet("QTreeView { font-size: 27px; show-decoration-selected: 0; } QTreeView::branch:has-siblings:!adjoins-item { border-image: none; } QTreeView::branch:has-siblings:adjoins-item { border-image: none; } QTreeView::branch:!has-children:!has-siblings:adjoins-item { border-image: none;} QTreeView::branch:has-children:!has-siblings:closed, QTreeView::branch:closed:has-children:has-siblings { border-image: none; image: url(':images/images/right_arrow.png'); } QTreeView::branch:open:has-children:!has-siblings, QTreeView::branch:open:has-children:has-siblings { border-image: none; image: url(':images/images/down_arrow.png'); } "); 
+0

ちょうどノートでは、これは通常望ましくない動作です。拡大表示されていないビューを選択できるのは一般的には好ましい – Falmarri

+0

私はなぜそれがモバイルアプリケーションにとって望ましくないのか分かりません - すべての子供がワンクリックで拡大されるのを望んでいません。クリックした親にモバイルアプリではダブルクリックは余計なようです! –

答えて

8

何かがあなたがやりたいことではないかもしれません。また、currentChanged信号を見てみることもできます。モバイルコンテキストでQtを使用したことはありません:)

+0

これはかなり近いです!親をシングルクリックすると、それが展開されます。私は別の親をシングルクリックすると、子供のクリックを処理して子を表示しないカスタムスロットを通過します。私はそれに行くだろう。ありがとう! –

-1

ダブルクリックの拡張を無効にしようとしましたか?

QObject::connect(
    tree, SIGNAL(clicked(const QModelIndex &)), 
    tree, SLOT(expand(const QModelIndex &)) 
); 

clicked信号の線に沿って

bookTreeView->setExpandsOnDoubleClick(false); 
+2

よろしく、ダブルクリックの展開をオフにするだけです。 –

3

同じGrund回答、すでに開いている場合はクリックして閉じます。 mainwindow.hで

QObject::connect(
    tree, SIGNAL(clicked(const QModelIndex &)), 
    this, SLOT(expandItem(const QModelIndex &)) 
); 

void MainWindow::expandItem(const QModelIndex &index) 
{ 
    tree->isExpanded(index)? tree->collapse(index) : tree->expand(index); 
} 

private slots: 
void expandItem(const QModelIndex &index) 
関連する問題