Здравствуйте, гость ( Вход | Регистрация )
Алексей1153 | Дата 16.12.2015, 14:23 |
ага, я добавил и посмотрел - тоже про файлы подумал - но ты меня опередил ))
|
|
dmsovetov | Дата 16.12.2015, 14:08 |
и вот такой невалидный индекс ты передаёшь в rowCount, после чего ассерт показывается Обернул в проверку - все равно ассерт срабатывает Может тут с потоками что-то не то? Ведь QFileSystemModel вобще в другом потоке сканирует. Кажется понял. Надо вот так цикл поменять:
|
|
ViGOur | Дата 16.12.2015, 13:55 |
ViGOur, рекурсии нету, поскольку указаны SLOT и SIGNAL , поэтому препроцессор вроде понимает их как разные сигнатуры согласен, перепрочел, был невнимателен. |
|
Алексей1153 | Дата 16.12.2015, 13:46 |
dmsovetov, не знаю, как насчёт одинаковых имён, я к своим слотам и сигналам приписываю префиксы slot_ и signal_ всегда, чтобы не нарываться на одинаковые имена ) Так, на всякий случай. Здесь вроде всё правильно компилятор понимает ещё момент. Я добавил проверку
и вот такой невалидный индекс ты передаёшь в rowCount, после чего ассерт показывается Причину невалидности не знаю ViGOur, рекурсии нету, поскольку указаны SLOT и SIGNAL , поэтому препроцессор вроде понимает их как разные сигнатуры |
|
ViGOur | Дата 16.12.2015, 13:37 |
Думается мне, что у тебя программа уходит в бесконечную рекурсию, от того и accert | |
dmsovetov | Дата 16.12.2015, 13:31 |
Цитата мне сдаётся, что вот тут что-то не так Та не, то у меня так слот называется, его можно по-другому называть - все равно асерт будет. Цитата Этот косячный коннект убираю - ассерт пропадает. Разбирайся, что ты имел в виду в этом коннекте Ну конечно, он ведь больше не делает fetchMore, вот и ассерта нету Цитата А как у тебя компилятор такое позволил У меня Visual Studio 2013 Community. Студия много чего неправильного позволяет, а потом оно под всякими GCC/LLVM под мак/иос/андроид не собирается, так что лучше с таким не баловаться ) |
|
Алексей1153 | Дата 16.12.2015, 12:56 |
dmsovetov, ассерт намекает, что ASSERT: "!fileName.isEmpty()" in file dialogs\qfilesystemmodel.cpp, line 1857 Кстати, даже просто переименовываю файл вне программы, моделька подхватывает и падает с таким же ассертом )) Раскрывающийся текст А как у тебя компилятор такое позволил QTreeView::EditTrigger::EditKeyPressed , тоже так хочу у меня только так QTreeView::EditKeyPressed позволяет мне сдаётся, что вот тут что-то не так connect(this, SIGNAL(directoryLoaded(const QString &)), this, SLOT(directoryLoaded(const QString &))); Этот косячный коннект убираю - ассерт пропадает. Разбирайся, что ты имел в виду в этом коннекте |
|
dmsovetov | Дата 16.12.2015, 12:13 |
думаю, правильнее так - а вдруг количество строк поменяется ? ... ну и полезно проверить Попробовал. Не помогло Ещё мне кажется, что нужен будет рекурсивный скан вглубь всего дерева. А сейчас только по первому уровню пробегаешь Сигнал directoryLoaded будет вызываться для всех папок, которые я подгрузил через fetchMore. Оно все грузит как надо, проблема в том, что drag'n'drop потом валится вот на таком асерте PS прикрепляю минимальный проект к посту. |
|
Алексей1153 | Дата 16.12.2015, 9:10 |
dmsovetov, что в ассерте то пишется ? и сильно смущает такой подход
думаю, правильнее так - а вдруг количество строк поменяется ?
ну и полезно проверить
- казалось бы, методы модели должны правильно реагировать на невалидные индексы. Ан нет, скажем, табличные модели прекрасно падают, если в некоторые методы передать невалидный индекс . Ещё мне кажется, что нужен будет рекурсивный скан вглубь всего дерева. А сейчас только по первому уровню пробегаешь |
|
dmsovetov | Дата 15.12.2015, 21:37 |
Добрый день. Хотелось бы узнать, как можно заставить QFileSystemModel просканировать все папки начиная от корневого индекса модели. Я пробовал дергать fetchMore, когда получаю сигнал directoryLoaded, но после этого там что-то ломается - перемещение файла просто валится на асерте внутри модели. Вот так я пробовал сканировать:
P.S. да, знаю что там специально сделано, чтоб грузилось по требованию, но у меня специфическая задача |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 16:07 |