Qt5 QFileDialog wywala crash

Qt5 QFileDialog wywala crash
bajos
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: UwUdź
  • Postów: 267
0

Witajcie,

Piszę coś w Qt5 i mam potrzebę stworzenia dialogu. Zrobiłem sobie

Kopiuj
QString fileName = QFileDialog::getOpenFileName(NULL/*Jak tu dam this to wywala błąd kompilatora bo to w metodzie klasy dziedziczacej po QThread*/, tr("Open Model"), QString() , tr("Obj Files (*.obj)"), NULL, NULL /*Tutaj i tak są wartości domyślne 0*/);

Jak włącze dialog i wybiorę plik .obj to dialog się wyłącza i crash-uje program. Łaj? Sprawdziłem już, że to nie wątek zamyka cały proces tylko crash od QFileDialog.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
3

Kluczem tutaj zapewne jest to, że kombinujesz niepotrzebnie z wątkami.
Wszystkie operacje związane UI muszą odbywać się na głównym wątku!
Zapewne w logach masz odpowiednią informację na ten temat.

Jeśli to nie to, wklej tu zawartość logów i call stack wątku z crashem.

bajos
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: UwUdź
  • Postów: 267
0

Nie wiem czy to jest to. Ale:

Kopiuj
 BasicTimer::stop: Failed. Possibly trying to stop from a different thread
QBasicTimer::stop: Failed. Possibly trying to stop from a different thread
QBasicTimer::stop: Failed. Possibly trying to stop from a different thread
QBasicTimer::stop: Failed. Possibly trying to stop from a different thread

(BennuModelEditor:5957): Gtk-CRITICAL **: gtk_tree_model_filter_get_value: assertion 'GTK_TREE_MODEL_FILTER (model)->priv->stamp == iter->stamp' failed

(BennuModelEditor:5957): GLib-GObject-CRITICAL **: g_object_set_property: assertion 'G_IS_VALUE (value)' failed

(BennuModelEditor:5957): GLib-GObject-CRITICAL **: g_value_unset: assertion 'G_IS_VALUE (value)' failed

(BennuModelEditor:5957): Gtk-CRITICAL **: gtk_tree_model_filter_get_value: assertion 'GTK_TREE_MODEL_FILTER (model)->priv->stamp == iter->stamp' failed

(BennuModelEditor:5957): GLib-GObject-CRITICAL **: g_object_set_property: assertion 'G_IS_VALUE (value)' failed

(BennuModelEditor:5957): GLib-GObject-CRITICAL **: g_value_unset: assertion 'G_IS_VALUE (value)' failed

(BennuModelEditor:5957): Gtk-CRITICAL **: gtk_tree_model_filter_get_value: assertion 'GTK_TREE_MODEL_FILTER (model)->priv->stamp == iter->stamp' failed

(BennuModelEditor:5957): GLib-GObject-CRITICAL **: g_object_set_property: assertion 'G_IS_VALUE (value)' failed

(BennuModelEditor:5957): GLib-GObject-CRITICAL **: g_value_unset: assertion 'G_IS_VALUE (value)' failed

(BennuModelEditor:5957): Gtk-CRITICAL **: gtk_tree_model_filter_iter_next: assertion 'GTK_TREE_MODEL_FILTER (model)->priv->stamp == iter->stamp' failed

(BennuModelEditor:5957): Gtk-CRITICAL **: /build/buildd/gtk+2.0-2.24.23/gtk/gtktreeview.c:6089 (validate_visible_area): assertion `has_next' failed.
There is a disparity between the internal view of the GtkTreeView,
and the GtkTreeModel.  This generally means that the model has changed
without letting the view know.  Any display from now on is likely to
be incorrect.

QBasicTimer::stop: Failed. Possibly trying to stop from a different thread
Program nieoczekiwanie przerwał pracę.
MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0

Dziwne te logi (pewnie je patrzysz w złe miejsce).
Ze źródeł Qt wynika, że powinieneś mieć komunikat: Widgets must be created in the GUI thread..

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.