Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

How to move QTreeWidget realtive to "main form" ?



  • The following code is in a respose to action of button (Disolay BT devices ) in main layout.
    I like to move it relative to selected point IN THE layout - for example next to the button pushed.
    How ?

    Secondly I do not need the "full window" display - with title, min / max etc.
    Just a tree view with frame.

    Please excuse me if I am not using correct Qt terms, I am still a greehorn and obviously having problems combining Qt Designer and with plain code.

    Code :

    // print bluetooth data to tree view
    QTreeWidget *treeWidget = new QTreeWidget();
    tree process here
    move ?? relative to some point
    treeWidget->show(); // show blank form

    aee273f9-4ccc-4117-acae-53de9de0e2be-image.png


  • Lifetime Qt Champion

    @AnneRanch What about https://doc.qt.io/qt-5/qwidget.html#pos-prop ?
    But why do you want to position manually? Why don't you want to use layouts?
    Or do you mean you want to position/move the whole window (you can do it with move() also)?



  • @jsulm
    Mainly because I still do not understand the interaction , or lack of it, between Qt Designer and Qt Creator.
    The example I am working on puts the whole form tree (??) at random place .
    Yes, I can move it relative to desktop.
    I asked for help to move it relative to main window / form.
    In Qt terminology I need to have the tree CODE as "child" of "main window".
    Qt Designer does not let me , I need CODE designer.
    I am currently looking at QDIalog class and I think it will do what I want - in CODE.



  • To show your dialog at a specific point, you need to use mapToGlobal to retreive the position of the clicked button relative to the screen:

    connect(button,&QPushButton::clicked, [button] (bool clicked)
           {
           QPoint xy=button->mapToGlobal(button->pos());
           xy+=QPoint(0,30);  // move down 30px
           qDebug()<<"clicked"<<xy;
           
           QDialog dial;
           dial.move(xy);
           dial.exec();
    
           });
    

Log in to reply