How can I double click an item?

Need help, or want to share a macro? Post here!
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Post Reply
grd
Posts: 328
Joined: Wed Apr 13, 2022 5:13 am
Location: Eindhoven, The Netherlands

How can I double click an item?

Post by grd »

We are working on FreePDM https://github.com/grd/FreePDM

The file is src/gui/MainWindow.py that is called from main.py in the root.

When I select an item to go to a different directory for instance or to show the content of a file, I would suggest to use a double click. How can I do this? How can I go to a different directory? Or show the contents of a file?
About Nim. Latest Release 2.0.2. Here is Nim in 100 seconds and a Nim package. There are Qt and OCCT packages.
User avatar
mfro
Posts: 666
Joined: Sat Sep 23, 2017 8:15 am

Re: How can I double click an item?

Post by mfro »

does this help (quickly nailed together from an example found on the net):

Code: Select all

import sys
from PySide2 import QtWidgets, QtCore

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)

        self.resize(600, 600)
        self.fileBrowserWidget = QtWidgets.QWidget(self)
        self.setCentralWidget(self.fileBrowserWidget)

        self.dirmodel = QtWidgets.QFileSystemModel()
        # Don't show files, just folders
        self.dirmodel.setFilter(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.AllDirs)
        self.folder_view = QtWidgets.QTreeView(parent=self);
        self.folder_view.setModel(self.dirmodel)
        self.folder_view.clicked[QtCore.QModelIndex].connect(self.clicked)

        self.folder_view.setHeaderHidden(True)
        self.folder_view.hideColumn(1)
        self.folder_view.hideColumn(2)
        self.folder_view.hideColumn(3)

        self.selectionModel = self.folder_view.selectionModel()
        self.filemodel = QtWidgets.QFileSystemModel()

        # Don't show folders, just files
        self.filemodel.setFilter(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Files)
        self.file_view = QtWidgets.QListView(parent=self);
        self.file_view.setModel(self.filemodel)
        self.file_view.doubleClicked.connect(self.fileDoubleClicked)
        self.file_view.clicked.connect(self.fileClicked)

        splitter_filebrowser = QtWidgets.QSplitter()
        splitter_filebrowser.addWidget(self.folder_view)
        splitter_filebrowser.addWidget(self.file_view)
        splitter_filebrowser.setStretchFactor(0,2)
        splitter_filebrowser.setStretchFactor(1,4)

        hbox = QtWidgets.QHBoxLayout(self.fileBrowserWidget)
        hbox.addWidget(splitter_filebrowser)

    def set_path(self):
        self.dirmodel.setRootPath("")

    def clicked(self, index):
        # the signal passes the index of the clicked item
        dir_path = self.filemodel.filePath(index)
        root_index = self.filemodel.setRootPath(dir_path)
        self.file_view.setRootIndex(root_index)

    def fileDoubleClicked(self):
        print('double clicked')

    def fileClicked(self):
        print('click on a file')


app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
main.set_path()

sys.exit(app.exec_())
??
Cheers,
Markus
grd
Posts: 328
Joined: Wed Apr 13, 2022 5:13 am
Location: Eindhoven, The Netherlands

Re: How can I double click an item?

Post by grd »

mfro wrote: Tue Jul 26, 2022 10:50 am does this help (quickly nailed together from an example found on the net):
Yes, I managed it. There are still some issues but I can handle that. Thanks! I pushed it on github.
About Nim. Latest Release 2.0.2. Here is Nim in 100 seconds and a Nim package. There are Qt and OCCT packages.
Post Reply