Results 1 to 3 of 3

Thread: Setting QTreeWidget flag to Qt::ItemIsEditable seems to disable itemActivated SIGNAL

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Sep 2007
    Location
    Vienna, Austria
    Posts
    19
    Thanks
    10
    Qt products
    Qt3 Qt4
    Platforms
    MacOS X Windows

    Default Re: Setting QTreeWidget flag to Qt::ItemIsEditable seems to disable itemActivated SIG

    I've summarized the problem in a small demonstration: If I set the ItemIsEditable flag then the itemActivated signal is not triggered on double clicking. Else it works fine.

    Qt Code:
    1. Window::Window()
    2. {
    3. treeWidget = new QTreeWidget();
    4.  
    5. list << "";
    6.  
    7. QTreeWidgetItem * treeWidgetItem = new QTreeWidgetItem(treeWidget, list);
    8.  
    9. //setting this flag disables itemActivated signal for double clicking
    10. treeWidgetItem->setFlags(treeWidgetItem->flags()|Qt::ItemIsEditable);
    11.  
    12. treeWidget->insertTopLevelItem(0, treeWidgetItem);
    13.  
    14. connect(treeWidget, SIGNAL(itemActivated(QTreeWidgetItem*, int)),
    15. this, SLOT(treeWidgetItemActivated(QTreeWidgetItem*, int)));
    16.  
    17. QGridLayout * layout = new QGridLayout;
    18. layout->addWidget(treeWidget);
    19.  
    20. setLayout(layout);
    21. }
    22.  
    23. void Window::treeWidgetItemActivated(QTreeWidgetItem * item, int column)
    24. {
    25. QMessageBox::information(this, "", "itemActivated triggered");
    26. }
    To copy to clipboard, switch view to plain text mode 
    Attached Files Attached Files

  2. #2
    Join Date
    Feb 2008
    Posts
    491
    Thanks
    12
    Thanked 142 Times in 135 Posts
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11

    Default Re: Setting QTreeWidget flag to Qt::ItemIsEditable seems to disable itemActivated SIG

    As I read the source code, that is the expected behavior: link

    Two possible solutions:
    1. Use QTreeWidget::itemDoubleClicked (QTreeWidgetItem * item, int column) which has the same signature.
    2. Subclass QTreeWidget and emit the signal yourself:
      Qt Code:
      1. void MyTreeWidget::mouseDoubleClickEvent(QMouseEvent *event){
      2. emit activated(indexAt(event->pos()));
      3. QTreeWidget::mouseDoubleClickEvent(event);
      4. }
      To copy to clipboard, switch view to plain text mode 

  3. The following user says thank you to norobro for this useful post:

    y.shan (23rd November 2011)

Similar Threads

  1. Replies: 2
    Last Post: 20th October 2010, 16:16
  2. QTreeWidget disable children
    By hlvietlong in forum Qt Programming
    Replies: 1
    Last Post: 20th June 2009, 01:34
  3. Replies: 0
    Last Post: 20th May 2009, 10:01
  4. QTreeWidget Single Column Sort Disable
    By craigjameshamilton in forum Newbie
    Replies: 1
    Last Post: 21st April 2008, 08:08
  5. setting QTreeWidget vertical labels
    By hyling in forum Qt Programming
    Replies: 2
    Last Post: 10th January 2007, 18:53

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.