Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Property with a list as possible values for custom widget?
Forum Updated to NodeBB v4.3 + New Features

Property with a list as possible values for custom widget?

Scheduled Pinned Locked Moved Unsolved General and Desktop
26 Posts 4 Posters 9.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Panoss

    I forgot to mention I 'm working in python, so I'm trying to 'translate' your code in python.
    I 'll call my property 'ContainersWidgets'.
    So, a 'translation' of the above code by mrJJ would be something like:

    ContainersWidgets = QtCore.pyqtProperty(QList, getContainersWidgets , setContainersWidgets )
    

    Where should '(list of ints)' go?

    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by mrjj
    #7

    @Panoss
    Im 110% python noob but it seems yes.
    https://wiki.qt.io/Using_Qt_Properties_in_PySide

    from PySide.QtCore import QObject, Property
     
    class MyObject(QObject):
     def ''init''(self,startval=42):
     QObject.''init''(self)
     self.ppval = startval
     
    def readPP(self):
     return self.ppval
     
    def setPP(self,val):
     self.ppval = val
     
    pp = Property(int, readPP, setPP)
     
    obj = MyObject()
    obj.pp = 47
    print (obj.pp)
    
    1 Reply Last reply
    0
    • P Offline
      P Offline
      Panoss
      wrote on last edited by Panoss
      #8

      I use QtGui.QListWidget (the Qt Designer 's QListWidget )

      ContainersWidgets = QtCore.pyqtProperty(QtGui.QListWidget, getContainersWidgets, setContainersWidgets)
      

      But how do I set the value?

      @QtCore.pyqtSlot(int)
          def setContainersWidgets(self, value):
              self._containers_widgets = value
      

      So the variable self._containers_widgets will get the value.
      How shall I put this value as selected item from the list?

      First of all, how shall I refer to the list?(I mean the widget, the QtGui.QListWidget)
      list=??

      mrjjM 1 Reply Last reply
      0
      • P Panoss

        I use QtGui.QListWidget (the Qt Designer 's QListWidget )

        ContainersWidgets = QtCore.pyqtProperty(QtGui.QListWidget, getContainersWidgets, setContainersWidgets)
        

        But how do I set the value?

        @QtCore.pyqtSlot(int)
            def setContainersWidgets(self, value):
                self._containers_widgets = value
        

        So the variable self._containers_widgets will get the value.
        How shall I put this value as selected item from the list?

        First of all, how shall I refer to the list?(I mean the widget, the QtGui.QListWidget)
        list=??

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #9

        @Panoss

        Hi
        Sadly I dont know enough python to know.

        http://pyqt.sourceforge.net/Docs/PyQt4/qstringlist.html#details

        1 Reply Last reply
        0
        • P Offline
          P Offline
          Panoss
          wrote on last edited by Panoss
          #10

          Don't worry my friend, 'll find out the way, sooner or later.
          I 'm not sure it is correct that I 'm using Qt Designer 's QListWidget in the place of 'QList<int>' you wrote above.
          Or maybe I should use QStringList?
          The QList you 're referring to, is a widget?

          I think I should use QStringList in place of your QList.

          mrjjM 1 Reply Last reply
          0
          • P Panoss

            Don't worry my friend, 'll find out the way, sooner or later.
            I 'm not sure it is correct that I 'm using Qt Designer 's QListWidget in the place of 'QList<int>' you wrote above.
            Or maybe I should use QStringList?
            The QList you 're referring to, is a widget?

            I think I should use QStringList in place of your QList.

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #11

            @Panoss

            Hi
            QListWidget is a widget ( listbox) so that is not well for properties.

            • I think I should use QStringList in place of your QList.
              I agree since QList is template based it might be missing as QList.
              But QStringList is
              class QStringList : public QList<QString>
              So very alike.

            Maybe this can be used
            http://www.programcreek.com/python/example/63681/PyQt4.QtCore.QStringList

            1 Reply Last reply
            1
            • P Offline
              P Offline
              Panoss
              wrote on last edited by
              #12

              Even though referred in the examples you posted, PyQt4.QtCore.QStringList doesn't exist!!

              mrjjM 1 Reply Last reply
              0
              • P Panoss

                Even though referred in the examples you posted, PyQt4.QtCore.QStringList doesn't exist!!

                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by mrjj
                #13

                @Panoss
                And you have something like
                from PyQt4.QtCore import QStringList
                or similar import ?

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  Panoss
                  wrote on last edited by Panoss
                  #14

                  I find nothing similar to QStringList in PyQt4.QtCore.
                  That's quite strange, either it has been moved...or I have no idea! :)

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    Panoss
                    wrote on last edited by Panoss
                    #15

                    From here:

                    From PyQt4 4.6+ in Python3 QString doesn't exist and you are supposed to use ordinary Python3 unicode objects (string literals). To do this so that your code will work in both Python 2.x AND Python 3.x you can do following:

                    try:
                        from PyQt4.QtCore import QString
                    except ImportError:
                        # we are using Python3 so QString is not defined
                        QString = type("")
                    

                    Ok, this for QString.

                    From here:
                    The QList class is a template class that provides lists. available in C++ only. But in python, it have python list data-type ready to used. If you want to use behavior like list you can use python list similar QList

                    So how will I do it? QList = []?

                    (with '[]' we define a list in python)

                    1 Reply Last reply
                    1
                    • P Offline
                      P Offline
                      Panoss
                      wrote on last edited by
                      #16

                      I tried this:

                      QList = []
                      
                      ContainersWidgets = QtCore.pyqtProperty(QList, getContainersWidgets, setContainersWidgets)
                      

                      But I get an error:
                      "ContainersWidgets = QtCore.pyqtProperty(QList, getContainersWidgets, setContainersWidgets)
                      TypeError: bytes or ASCII string expected not 'list'"

                      It doesn't accept a List, only bytes or ASCII.

                      mrjjM jsulmJ 2 Replies Last reply
                      0
                      • P Panoss

                        I tried this:

                        QList = []
                        
                        ContainersWidgets = QtCore.pyqtProperty(QList, getContainersWidgets, setContainersWidgets)
                        

                        But I get an error:
                        "ContainersWidgets = QtCore.pyqtProperty(QList, getContainersWidgets, setContainersWidgets)
                        TypeError: bytes or ASCII string expected not 'list'"

                        It doesn't accept a List, only bytes or ASCII.

                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #17

                        I think you need a python head for this :)
                        Are you using
                        https://pypi.python.org/pypi/PyQt5

                        or what version ?

                        1 Reply Last reply
                        0
                        • P Offline
                          P Offline
                          Panoss
                          wrote on last edited by
                          #18

                          The previous version, PyQt4.

                          mrjjM 1 Reply Last reply
                          0
                          • P Panoss

                            The previous version, PyQt4.

                            mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by
                            #19

                            @Panoss said in Property with a list as possible values for custom widget?:

                            PyQt4

                            ok it really should have the qstringlist

                            http://pyqt.sourceforge.net/Docs/PyQt4/qstringlist.html

                            1 Reply Last reply
                            0
                            • P Offline
                              P Offline
                              Panoss
                              wrote on last edited by
                              #20

                              Yes it should, but it doesn't :) !!!

                              mrjjM 1 Reply Last reply
                              0
                              • P Panoss

                                Yes it should, but it doesn't :) !!!

                                mrjjM Offline
                                mrjjM Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on last edited by
                                #21

                                @Panoss
                                Well give it some hours. Maybe a Qt python user know the secret of
                                how to have it available.

                                1 Reply Last reply
                                0
                                • P Offline
                                  P Offline
                                  Panoss
                                  wrote on last edited by Panoss
                                  #22

                                  https://hub.qgis.org/wiki/17/Python_plugin_API_changes_from_18_to_20#Replace-QStringList-with-list

                                  "Replace QList methods with python list function"

                                  So both Qlist and QStringList are replaced by list.

                                  mrjjM 1 Reply Last reply
                                  0
                                  • P Panoss

                                    https://hub.qgis.org/wiki/17/Python_plugin_API_changes_from_18_to_20#Replace-QStringList-with-list

                                    "Replace QList methods with python list function"

                                    So both Qlist and QStringList are replaced by list.

                                    mrjjM Offline
                                    mrjjM Offline
                                    mrjj
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #23

                                    @Panoss

                                    But is that no QGIS API ?
                                    is that the same as
                                    https://sourceforge.net/projects/pyqt/

                                    It looks as some other binding. So i Guess that is why its not there.

                                    1 Reply Last reply
                                    0
                                    • P Offline
                                      P Offline
                                      Panoss
                                      wrote on last edited by
                                      #24

                                      Well now I'm confused, I don't really know.
                                      I 'll have to 'dig' more.

                                      1 Reply Last reply
                                      1
                                      • P Panoss

                                        I tried this:

                                        QList = []
                                        
                                        ContainersWidgets = QtCore.pyqtProperty(QList, getContainersWidgets, setContainersWidgets)
                                        

                                        But I get an error:
                                        "ContainersWidgets = QtCore.pyqtProperty(QList, getContainersWidgets, setContainersWidgets)
                                        TypeError: bytes or ASCII string expected not 'list'"

                                        It doesn't accept a List, only bytes or ASCII.

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #25

                                        @Panoss said in Property with a list as possible values for custom widget?:

                                        QList = []

                                        Should be

                                        QList = type([])
                                        

                                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        P 1 Reply Last reply
                                        2
                                        • jsulmJ jsulm

                                          @Panoss said in Property with a list as possible values for custom widget?:

                                          QList = []

                                          Should be

                                          QList = type([])
                                          
                                          P Offline
                                          P Offline
                                          Panoss
                                          wrote on last edited by Panoss
                                          #26

                                          @jsulm said in Property with a list as possible values for custom widget?:

                                          @Panoss said in Property with a list as possible values for custom widget?:

                                          QList = []

                                          Should be

                                          QList = type([])
                                          

                                          You re right!!!
                                          Now the error is gone!

                                          But my property doesn't appear in Qt Designer.

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved