Russian Qt Forum
Ноябрь 24, 2024, 18:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Можно ли в Слот передать два параметра?  (Прочитано 3978 раз)
qtnoob
Гость
« : Май 02, 2012, 06:37 »

Код
C++ (Qt)
private slots:
   void on_pushButton_clicked();
   void replyFinish(QNetworkReply*, QString &str);
   void replyFinish2(QNetworkReply*);
 
 
void MainWindow::on_pushButton_clicked()
{
   QString siteUrl = "http://google.com/complete/search?output=toolbar&hl=ru&js=true&qu=" + ui->inpBoxKeyWord->text();
 
   QNetworkAccessManager *pManager = new QNetworkAccessManager;
   pManager->get(QNetworkRequest(QUrl(siteUrl)));
 
   connect(pManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinish(QNetworkReply*, siteUrl)));
 
}
 


Мучаюсь, ни где немогу найти ответ.

Подскажите пожалуйста.
« Последнее редактирование: Май 02, 2012, 06:39 от qtnoob » Записан
Bepec
Гость
« Ответ #1 : Май 02, 2012, 07:05 »

Эм... А голова работать у тебя будет?

В твоём слоте второй параметр скорее всего вякнет, что так нельзя.

Что тебе мешает просто использовать siteURL в слоте?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Май 02, 2012, 08:06 »

Можно ли в Слот передать два параметра?
Можно, если в сигнале у вас будет 2 или более параметров.
Ещё можно как функцию слот вызывать.
А такого синтаксиса коннекта, как вы хотите, нет.
Записан
qtnoob
Гость
« Ответ #3 : Май 02, 2012, 19:48 »

Дело в том что хочу переписать с php парсер подсказок в google,

Как реализовать вызовы
Код
PHP
$sugg_data = file_get_contents($url2google);

Видете тут сначало вызывается дефолтный урл потом через foreach
у дефолтному прибавляется значения и массива $key_adds.

Вот почему мне нужен второй параметр, в первом слоте на событие клик я загружаю
дефолтный урл, а потом мне надо прердать это всё в дргой слот

как то так, подскажите как лучше, или сделать всё в 1 слоте....

да и ещё кто какбы записал Массив, QList или QMap? тут тоже запарка...

Как регулярку записать, QRegex rx(""); ругается на слэши.....


Спасибо вам!!
Код
PHP
set_time_limit(300);
$lang = 'en';            //Язык
$keyword = $_GET['keywords'];    //Ключевик
 
if ($keyword < empty($keyword)) {
echo "";}
else {
 
$keyword = urlencode($keyword);
 
$url2google = 'http://google.com/complete/search?output=toolbar&hl='.$lang.'&js=true&qu='.$keyword;
 
$key_adds = array('+1','+2','+3','+4','+5','+6','+7','+8','+9','+0',
           '+a','+b','+c','+d','+e','+f','+g','+h','+i','+j','+k',
           '+l','+m','+n','+o','+p','+q','+r','+s','+t','+u','+v',
           '+w','+x','+y','+z');
 
$sugg_data = file_get_contents($url2google);
 
foreach ($key_adds as $value){
 
   $sugg_data .= file_get_contents($url2google.$value);
 
}
 
preg_match_all('/(?<=\<suggestion data\=\")[\w\W]*?(?=\"\/\>)/',$sugg_data,$sugg_tmp);
 
$sugg_tmp2 = implode('<br>
'
,$sugg_tmp[0]);
 
preg_match_all('/(.*)/',$sugg_tmp2,$sugg_fin);
 
echo implode($sugg_fin[1]);
 
//echo implode('',$sugg_fin[1]);
}
Записан
qtnoob
Гость
« Ответ #4 : Май 02, 2012, 21:42 »

ПРИКРЕПИЛ ИСХОДНИК!

Почему-то окно очищается и иногда последние результаты высвечиваются
Направте пожалуйста, что не так.
Записан
Bepec
Гость
« Ответ #5 : Май 02, 2012, 23:13 »

Помоему редкий случай соответствия форумного ника и уровня знаний Подмигивающий

По теме: не пытайся копировать другой язык - всёравно ничего не выйдет(а то, что выйдет, будет ужасным). Лучше напиши своё на С++.
Записан
qtnoob
Гость
« Ответ #6 : Май 03, 2012, 01:33 »

Лучше бы подсказал,  я бы выучился на примере.


Помоему редкий случай соответствия форумного ника и уровня знаний Подмигивающий

По теме: не пытайся копировать другой язык - всёравно ничего не выйдет(а то, что выйдет, будет ужасным). Лучше напиши своё на С++.
Записан
V1KT0P
Гость
« Ответ #7 : Май 03, 2012, 03:50 »

Лучше бы подсказал,  я бы выучился на примере.
Лучше для начала подучи С++. Вот например первая попавшаяся строка:
Код:
QNetworkAccessManager *pManager = new QNetworkAccessManager;
Ты выделяешь память которую нигде не освобождаешь, получаешь утечку памяти. Насчет того что последний результат. На один твой запрос срабатывает несколько раз replyFinish, я не разбирался подробно как работает QNetworkAccessManager, но возможно сигнал finished вызывается каждый раз при получении данных, даже если это не всего-лишь кусок данных. По крайней мере я сразу получаю указатель на QNetworkReply из QNetworkAccessManager и подключаюсь к сигналу readChannelFinished. Отрабатывает четко один раз после принятия окончательного принятия данных.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.116 секунд. Запросов: 23.