borysiasty / plugin_reloader

QGIS plugin: Reloads a chosen plugin in one click (only useful for Python Plugin Developers)
GNU General Public License v3.0
19 stars 16 forks source link

RuntimeError: wrapped C/C++ object of type QComboBox has been deleted #18

Closed andmichalski closed 5 years ago

andmichalski commented 5 years ago

After upgrading to version 3.4 (I am using Ubuntu 18) plugin not reload correctlly. It seems that init.py of function was not correctlly running. Eg. combobox of reloaded toolbar are deleted... Thanks for help.

borysiasty commented 5 years ago

Twoja wtyczka musi na wyjściu odłączać sygnały z QGIS-a, które podłączyła przy ładowaniu. Reloader usuwa z pamięci starą instancję i ładuje nową, a nieodłączone sygnały z projektu czy legendy trafiają na takie właśnie puste miejsca po widgetach. Nie musi natomiast odłączać swoich wewnętrznych, skoro obiekt wysyłający idzie do piachu i już nic i tak nie wyśle.

Zamykam, bo Reloader tylko obnaża ten problem, a dokładnie tak samo się stanie, jeśli np. wyłączysz lub odinstalujesz wtyczkę w Menedżerze, po czym QGIS coś do niej wyśle. Więc nawet, gdyby Reloader jakoś odłączał wszystkie nieodłączone sygnały (co jest prawdopodobnie niemożliwe), to by w ten sposób tylko zachęcał nas do pisania wadliwych wtyczek :)