Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2016, 14:39   #61
stasJun
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Не нужен foundFiles, я ж описал уже 2 раза.

Сделать сигнал в который передается имя файла и результат поиска (найден/не найден), в слоте для него добавлять в UI этот файл если найден.

И там же можно считать либо количество завершенных потоков (если 1 поток=1 файл), либо количество завершенных файлов (если 1 поток=много файлов, и количество файлов известно до запуска) для определения завершения всего поиска.
То есть например до запуска сохранить их число, при каждым срабатывании слота отнимать 1, когда стало 0 — значит поиск завершился (включить обратно кнопку Старт и т.п.)


А зачем нужен сигнал если нигде нет слота для него?
я Вас понял. но как это сделать я не знаю
сигнал в который передается имя файла и результат поиска (найден/не найден), в слоте для него добавлять в UI этот файл если найден. - у меня ж уже есть такой сигнал completed
stasJun вне форума Ответить с цитированием
Старый 19.10.2016, 14:41   #62
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну вот и создайте слот для него.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.10.2016, 15:19   #63
stasJun
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну вот и создайте слот для него.
стоп, Вы пишете , создайте сигнал, я вам пишу что у меня уже есть сигнал и Вы такие , вот и создайте слот. Я и так уже запутался и вы еще то слот то сигнал)) для кого создать слот? для completed , как навать лутче этот слот? и с слота стартед перенести все в этот слот?
stasJun вне форума Ответить с цитированием
Старый 19.10.2016, 15:23   #64
stasJun
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 95
По умолчанию

вы извините если что, мой пост №63 , но я честно уже запутался и кажется понимаю Вас , но как начинаю менятьб в коде , выходит одно исправил другое нашел- ошибку.
stasJun вне форума Ответить с цитированием
Старый 19.10.2016, 15:39   #65
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от stasJun Посмотреть сообщение
создайте сигнал, я вам пишу что у меня уже есть сигнал и Вы такие , вот и создайте слот.
А зачем нужен сигнал если нигде нет ни одного слота для него?
Один объект (поток в данном случае) генерирует сигналы, другой (виджет) реагирует на них в слотах.

Цитата:
Сообщение от stasJun Посмотреть сообщение
для completed , как навать лутче этот слот?
Так же как и первый, fileThread<Something>. fileThreadCompleted, fileThreadFileProcessed, ...

Цитата:
Сообщение от stasJun Посмотреть сообщение
и с слота стартед перенести все в этот слот?
То, что после запуска.
Как-нибудь типа
Код:
(QString file, bool found)
{
    if (found)
    {
        addToQListWidget(file);
    }

    filesLeft--;
    if (filesLeft == 0)
    {
        state = not running;
        enableStartButton();
        disableStopButton();
    }
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.10.2016, 15:42   #66
stasJun
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А зачем нужен сигнал если нигде нет ни одного слота для него?
Один объект (поток в данном случае) генерирует сигналы, другой (виджет) реагирует на них в слотах.


Так же как и первый, fileThread<Something>. fileThreadCompleted, fileThreadFileProcessed, ...


То, что после запуска.
Как-нибудь типа
Код:
(QString file, bool found)
{
    if (found)
    {
        addToQListWidget(file);
    }

    filesLeft--;
    if (filesLeft == 0)
    {
        state = not running;
        enableStartButton();
        disableStopButton();
    }
}
))) нужно еще такие переменые создавать?
filesLeft

enableStartButton
disableStopButton
stasJun вне форума Ответить с цитированием
Старый 19.10.2016, 15:45   #67
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не, про enableStartButton это типа псевдокод, просто возврат кнопок и т.п. в исходное состояние.

А filesLeft имелась в виду переменная в которую перед началом записывается кол-во файлов.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.10.2016, 16:17   #68
stasJun
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Не, про enableStartButton это типа псевдокод, просто возврат кнопок и т.п. в исходное состояние.

А filesLeft имелась в виду переменная в которую перед началом записывается кол-во файлов.
вот это не понял: addToQListWidget(file);
додать до листа виджет?
и filesLeft , я понял что эта перемена количества файлов. но где ее иницилизировать в начеле я хз) все другое исправил
Код:
void FindFilesWidget::fileThreadFileProcessed(QString file, bool found)
{
    if (found)
        {
            addToQListWidget(file);
        }
    
        --filesLeft;
        if (filesLeft == 0)
        {
            mActionState = ActionState::RUNNING;
            mStartButton->setText("&Start");
            mStartButton->setText("&Cancel");
        }
}

Последний раз редактировалось stasJun; 19.10.2016 в 16:19.
stasJun вне форума Ответить с цитированием
Старый 19.10.2016, 16:23   #69
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вывести файл в QListWidget или куда там надо.
Цитата:
Сообщение от stasJun Посмотреть сообщение
но где ее иницилизировать в начеле я хз
вы ж считаете размер всех файлов вначале, там же и количество можно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.10.2016, 16:49   #70
stasJun
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вывести файл в QListWidget или куда там надо.

вы ж считаете размер всех файлов вначале, там же и количество можно.
это делаю в void FindFilesWidget::startClicked()
Код:
for (int  index = 0; index < paths.size(); ++index)
        {
            QFileInfo fileInfo(paths[index]);
            mFileSize += fileInfo.size();
            ++mFileCount; 
        }
Код:
void FindFilesWidget::fileThreadFileProcessed(QString file, bool found)
{
    if (found)
    {
        addToQListWidget(file);
    }

    --mFileCount;
    if (mFileCount == 0)
    {
        mActionState = ActionState::RUNNING;
        mStartButton->setText("&Start");
        mStartButton->setText("&Cancel");
    }
} к
ак я понял , как делать
stasJun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск слов в файле Stepan_P Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 0 25.12.2015 14:14
Поиск слов в текстовом файле slipkos Помощь студентам 4 02.06.2013 19:18
Поиск симметричных слов в файле Almost Паскаль, Turbo Pascal, PascalABC.NET 1 10.01.2013 08:53
Поиск слов в файле сушка Общие вопросы по программированию, компьютерный форум 1 08.04.2012 12:44
Поиск слов в текстовом файле svt Помощь студентам 8 07.11.2009 19:56