title: Search/Filter custom Widgets for QListWidget
body: <p>How can I search/filter custom widgets in the QListWidget?</p>
  
  <p>For example, I have a custom form widget,</p>
  
  <pre><code>class MetadataForm(QtWidgets.QWidget):
      def __init__(self, data, parent=None):
          super(MetadataForm, self).__init__(parent)
  
          self.ui = Ui_MetaInfo()
          self.ui.setupUi(self)
          self.data = data
          self.keywords = data['keywords']
  
          self.ui.pkg_name.setText(self.data['name'])
          self.ui.pkg_version.setText(self.data['version'])
          self.ui.pkg_desc.setText(self.data['desc'])
          self.ui.pkg_author_lbl.setText(self.data['author'])
          self.ui.pkg_pubdate_lbl.setText(self.data['pub_date'])
  
          self.ui.install_btn.clicked.connect(self.install_pkg)
  
      def install_pkg(self):
          print('hello from {}'.format(self.data['name']))
  </code></pre>
  
  <p>I can add these to my <code>MainWindow</code></p>
  
  <pre><code>class MainWindow(QtWidgets.QDialog):
      def __init__(self, data, parent=None):
          super(MainWindow, self).__init__(parent)
          self.data = data
          self.ui = Ui_Main()
          self.ui.setupUi(self)
          self.set_catalog_data()
  
      def set_catalog_data(self):
          for item in self.data:
              # print(item)
              metadata = MetadataForm(item)
              print(metadata.keywords)
              lst_item = QtWidgets.QListWidgetItem()
              self.ui.catalog_list_wid.insertItem(
                  self.ui.catalog_list_wid.count(),
                  lst_item
              )
              self.ui.catalog_list_wid.setItemWidget(lst_item, metadata)
              lst_item.setSizeHint(metadata.sizeHint())
  </code></pre>
  
  <p>In my <code>MainWindow</code> my UI has a QLineEdit, named <code>self.ui.search_box</code>, how can I filter my custom <code>QListWidgetItem</code> based the keywords attribute of my Metadata class?</p>
  
  <p>Some simple testing data:</p>
  
  <pre><code>test_data = [
      {
          'name': 'Foo Model',
          'version': 'v1.0.0.1',
          'desc': lorem.paragraph(),
          'author': 'Jane Doe',
          'pub_date': '10/14/2018',
          'keywords': ['foo']
      },
      {
          'name': 'Bar Model',
          'version': 'v1.0.0.1',
          'desc': lorem.paragraph(),
          'author': 'Jon Smith',
          'pub_date': '11/2/2018',
          'keywords': ['bar']
      }
  ]
  </code></pre>