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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2016, 13:52   #41
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
и в нем тоже нету сигнала progressChanged, там слот.
да) переделал:
Код:
signals:
    void completed(QString, bool);
    void progresedChanged(qint64);
назвал подругому чтобы однаковые названия с слота и сигнала не было
stasJun вне форума Ответить с цитированием
Старый 18.10.2016, 14:56   #43
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
тогда уж лучше в виджете слоты называть как-нибудь типа fileThreadProgressChanged, progresedChanged странно звучит и разницу в 2 буквы в середине легко не заметить
переделал
stasJun вне форума Ответить с цитированием
Старый 19.10.2016, 09:50   #45
stasJun
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение

и пример выше был про случай когда один поток ищет только в одном файле, для переделывания под несколько файлов как тут надо не просто скопипастить
и тут я снова Вас не опнял. я же это в форе делаю, почему только для 1 потока?
stasJun вне форума Ответить с цитированием
Старый 19.10.2016, 09:59   #46
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

не для 1 потока, а для 1 поток=1 файл.

Потому что я так написал свой пример.

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

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
не для 1 потока, а для 1 поток=1 файл.

Потому что я так написал свой пример.

Если надо 1 поток=несколько файлов, то надо что-то переделать в нем. Как минимум found сейчас неправильно устанавливается, будет всегда true после первого файла в котором нашли нужную строку.
ок. а конект я правильно написал?:
Код:
for (size_t index = 0; index < mThreads.size(); ++index)
            connect(mThreads[index], SIGNAL(completed(QString, bool)), this, SLOT(fileThreadProgressChanged(qint64)));
бо так как Вы посоветовали:
Код:
 connect(mThreads[index], &FindWordInFileThread::completed, this, &FindFilesWidget::fileThreadProgressChanged);
выдает ошибку(но такие слоты и сигналы есть):
D:\Qt\5.5\msvc2013_64\include\QtCor e\qobject.h:226: error: C2338: Signal and slot arguments are not compatible.
D:\Development\Pavlik\Qt\FindFilesW idget\FindFilesWidget.cpp:91: see reference to function template instantiation 'QMetaObject::Connection QObject::connect<void(__cdecl FindWordInFileThread::* )(QString,bool),void(__cdecl FindFilesWidget::* )(qint64)>(const FindWordInFileThread *,Func1,const FindFilesWidget *,Func2,Qt::ConnectionType)' being compiled
with
[
Func1=void (__cdecl FindWordInFileThread::* )(QString,bool)

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

А вы не видите что ли что у них параметры разные?

И я писал какой сигнал для чего предполагался. Слоты естественно разные для каждого.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
completed и progressChanged.

Во втором (как и сейчас) просто передавать количество обработанных байтов: в цикле чтения если надо (только наверно лучше не каждую итерацию а как-то более редко) и в конце размер файла как сейчас.

А в completed наверно надо передавать имя файла и результат (в данном случае bool найдено/не найдено).
При его получении выводить результат и считать количество завершенных потоков для определения завершения всего поиска.



Цитата:
Сообщение от stasJun Посмотреть сообщение
но такие слоты и сигналы есть
дык и ошибка не об этом. Signal and slot arguments are not compatible.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 19.10.2016 в 10:59.
Alex11223 вне форума Ответить с цитированием
Старый 19.10.2016, 11:06   #49
stasJun
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 95
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А вы не видите что ли что у них параметры разные?

И я писал какой сигнал для чего предполагался. Слоты естественно разные для каждого.







дык и ошибка не об этом. Signal and slot arguments are not compatible.
или я туплю или лыжи не едут
Код:
public slots:
    void startClicked();
    void selectDirectoryClicked();
    void fileThreadProgressChanged(qint64);
Код:
signals:
    void completed(QString, bool);
    void progressChanged(qint64);
Код:
for (size_t index = 0; index < mThreads.size(); ++index)
            connect(mThreads[index], SIGNAL(completed(QString, bool)), this, SLOT(fileThreadProgressChanged(qint64)));
аргументы совпадают ислоты с сигналамы. Или я туплю жостко?
stasJun вне форума Ответить с цитированием
Старый 19.10.2016, 11:12   #50
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

где они совпадают-то? вы ж к completed пытаетесь подключить fileThreadProgressChanged.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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