[QGIS-Developer] Testing a ComboBox with a QCompleter using QTest
Alessandro Pasotti
apasotti at gmail.com
Fri Feb 28 00:51:23 PST 2020
I don't see anything related to QGIS in your issue, you should
probably ask on a Qt/PyQt mailing list.
On Fri, Feb 28, 2020 at 9:45 AM Jo <winfixit at gmail.com> wrote:
>
> Hi,
>
> I'm really stuck on this.
>
> I'm trying to test a combobox with a completer:
>
> When I do these manually, they work:
>
> cb = self.form.dockwidget.widget['sc_510_002']
> QTest.keyClicks(cb, '9000')
> QTest.qWait(1000)
> QTest.keyClick(cb, Qt.Key_PageUp, Qt.NoModifier, 500)
> QTest.keyClick(cb, Qt.Key_Enter, Qt.NoModifier, 500)
>
> When I want to simulate them with the above commands, all I see is the popup.
>
> I also tried the following:
>
> cb = self.form.dockwidget.widget['sc_510_002']
> QTest.keyClicks(cb, '9000')
> lv = cb.findChild(QListView)
> QTest.qWait(1000)
> QTest.mouseClick(lv.viewport(), Qt.LeftButton, 0, lv.visualRect).center())
>
> Based on what I found here:
>
> https://gist.github.com/peteristhegreat/cbd8eaa0e565d0b82dbfb5c7fdc61c8d
>
> and here:
>
> https://vicrucann.github.io/tutorials/qttest-signals-qtreewidget/
>
> I was glad I managed to translate it from C, but no joy.
>
> Jo
>
> On Sat, Feb 22, 2020 at 10:55 AM Jo <winfixit at gmail.com> wrote:
>>
>> Hi,
>>
>> I would love to add some testing code to my ever more complex application.
>>
>> Somehow I'm not succeeding though, these are my attempts:
>>
>> #form.dockwidget.widget['sc_510_002'].setCurrentIndex(5) # , doing it directly doesn't work
>> QTest.keyClicks(form.dockwidget.widget['sc_510_002'], '9000 Gent', Qt.NoModifier, 50) # this works, a popup appears
>> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Enter, Qt.NoModifier, 500)
>> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Tab, Qt.NoModifier, 500)
>> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer, Qt.Key_Down, Qt.NoModifier, 500)
>> #print(dir(form.dockwidget.widget['sc_510_002'].completer().widget()))
>> #form.dockwidget.widget['sc_510_002'].completer().setCurrentRow(0)
>> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer().widget().lineEdit(), Qt.Key_Enter, Qt.NoModifier, 500)
>> #form.dockwidget.widget['sc_510_002'].setEditText('1000 Brussel')
>>
>> The popup is the completer, I suppose, so I also tried to send keystrokes to that, but no luck.
>>
>> This is the method I use to add the completer to the QComboBox:
>>
>> def add_completer(self, items):
>> self.setEditable(True)
>> self.setInsertPolicy(0)
>> completer = QCompleter(items, self)
>> completer.setFilterMode(Qt.MatchContains)
>> completer.setCaseSensitivity(False)
>> self.setCompleter(completer)
>> self.setStyleSheet('QScrollBar: vertical {width: 16px;}')
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
--
Alessandro Pasotti
w3: www.itopen.it
More information about the QGIS-Developer
mailing list