<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2991639</guid>
        <pubDate>Thu, 22 Sep 2011 07:35:42 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2991639</link>
        <description><![CDATA[klep: Чтобы попасть внутрь цикла сообщений достаточно сделать вот что:<br><br>QTimer::singleShot(0, your-object, SLOT(StartScriptSlot())); <br><br>your-object - объект который наследованный от QObject]]></description>
        <author>klep</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2991308</guid>
        <pubDate>Wed, 21 Sep 2011 19:08:44 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2991308</link>
        <description><![CDATA[metej: Я видимо слишком торопился и был не точен в формулировках...<br>
Попытаюсь высказаться четче...<br>
Если взять другой фреймворк (SWT? SDL?) то отрисовка окна происходит в цикле, если цикл не запускать а только инициализировать окно и сделать видимым - оно моргнет и исчезнет. В этом же цикле вызывается функция которая позволяет обработать события поступающие от пользовательского интерфейса. Вполне логично предположить что где-то глубоко в дебрях Qt есть этот самый цикл (подозреваю что он стартует во время вызова QCoreApplication::exec()), а QWidget как наиболее очевидный представитель подобного поведения был выбран не как вариант для наследования (не хочется тащить из-за одного вечно закрытого окна библиотеку по зависимостям), а как вариант для разбора логики. Если там такого цикла нет, значит наверняка предусмотрен механизм регистрации в цикле приложения (сигнал-слот?), вот если создать самостоятельный класс унаследованый от QObject и зарегистрировать его аналогичным образом в цикле (присоединить к сигналу? реализовать слоты?) и уже при получении сигнала запускать скрипт - и волки сыты и овцы в шоколаде... :) Так у меня получится и QCoreApplication полностью инициализирован, механизм сигнал-слот доступным, и скрипт отработает фактически внутри exec()...<br>
<br>
Про наследование от QApplication - да не, не это хак, это наоборот по моему очень даже интересная затея, его тогда можно будет передать в окружение скрипта а не нативный QApplication... я имел ввиду QTimer... вот это вроде хак...<br>
<br>
p.s. В идеале GUI не нужен... <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2011-09-21T19:12:22+00:00">21.09.11, 19:12</time></span></span><br>
Сейчас еще раз перечитал все сообщения...<br>
понял что туплю не по детсадовски...<br>
processEvents - должно быть оно&#33; Пшол курить как с ним хорошо дружить...<br>
<br>
тему пока не закрываю... авось не взлетит...]]></description>
        <author>metej</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2991037</guid>
        <pubDate>Wed, 21 Sep 2011 13:37:51 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2991037</link>
        <description><![CDATA[klep: ничего не понял про внутренний цикл отрисовки, его там просто нет ( в виджете его нет ) &#33;<br><br>Также не понял почему расширение класса QApplication кажется хаком, ну да ладно.<br><br>Если внутри виджета запуск устраивает, отлично, делаем кнопку по сигналу clicked запускаем скрипт]]></description>
        <author>klep</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2990782</guid>
        <pubDate>Wed, 21 Sep 2011 11:11:49 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2990782</link>
        <description><![CDATA[metej: Мне почему то кажется это грязным хаком...<br>Надо исходники QWidget расковырять... там как то запускается внутренний цикл отрисовки окна при этом не блокируя основной поток приложения... если удастся понять алгоритм - можно будет реализовать свой класс с проверкой состояния QApplication и получив информацию о том что оно завелось уже тогда запускать скрипт...<br>Подскажите, какой хак грязнее? :)]]></description>
        <author>metej</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2990726</guid>
        <pubDate>Wed, 21 Sep 2011 10:27:30 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2990726</link>
        <description><![CDATA[klep: Наследуйтесь от QApplication и внутри в конструкторе делайте <br>QTimer::singleShot(0, this, SLOT(StartScript())); ( или внутри processEvents  это по вкусу )  и там уже работайте с вашим скриптом]]></description>
        <author>klep</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2990554</guid>
        <pubDate>Wed, 21 Sep 2011 08:45:34 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2990554</link>
        <description><![CDATA[metej: Ваша правда...<br>Но это что получается... QtScript фактически отрабатывает в пределах текущего потока еще до запуска a.exec()?<br>Как же он тогда обеспечивает механизм сигнал-слот если он еще не запущен? (по докам вроде как есть плюшка которая позволяет коннектиться к сигналам)<br>Если попытаться сразу же после вызова a.exec() например вызвать сигнал ScriptObject в котором и запускать engine-&gt;evaluate - то по идее тоже не взлетит, ибо тогда основной поток зациклится в a.exec() (он вроде как блокирующий)....<br>Как быть то?<br><br>p.s. вобще затея была примерно следующая... навоять оброботчик этого самого qscript для своих нужд, а по мере необходимости докидывать в его окружение qt классы и рисовать врапперы с фабриками... этакий JScript от MS но только кроссплатформенный...]]></description>
        <author>metej</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2989204</guid>
        <pubDate>Tue, 20 Sep 2011 03:53:47 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2989204</link>
        <description><![CDATA[klep: a.exit до a.exec ;)<br><br>правильно делать через  QTimer::singleShot(0, qApp, SLOT(exit()));]]></description>
        <author>klep</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2988838</guid>
        <pubDate>Mon, 19 Sep 2011 15:26:16 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2988838</link>
        <description><![CDATA[metej: Эээ...<br>
Совсем глупую весчь ща спрошу...<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int main(int argc, char *argv[])</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;QApplication a(argc, argv);</div><div class="code_line">&nbsp;&nbsp; &nbsp;a.exit();</div><div class="code_line">&nbsp;&nbsp; &nbsp;return a.exec();</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
тоже не завершается...<br>
я что то не так понял?  :huh:]]></description>
        <author>metej</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2988531</guid>
        <pubDate>Mon, 19 Sep 2011 10:53:13 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2988531</link>
        <description><![CDATA[klep: попробуй добавь QApplication в скрипт и вызови exit из скрипта<br><br>QScriptValue scriptApp = engine.newQObject(&amp;app);<br>engine-&gt;globalObject().setProperty(&quot;app&quot;, scriptApp);<br><br>Также можно попробовать дебагить SriptObject::exit(){ { ... } и посмотреть почему qApp-&gt;exit не работает]]></description>
        <author>klep</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2988420</guid>
        <pubDate>Mon, 19 Sep 2011 08:57:31 +0000</pubDate>
        <title>[Qt] QtScript и вызовы C++ методов.</title>
        <link>https://forum.sources.ru/index.php?showtopic=340692&amp;view=findpost&amp;p=2988420</link>
        <description><![CDATA[metej: И так, КОД:<br>
<br>
<strong class='tag-b'>Файл main.cpp</strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;QtGui&#62;</div><div class="code_line">#include &quot;scriptobject.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char *argv[])</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;QApplication a(argc, argv);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ScriptObject *obj = new ScriptObject();</div><div class="code_line">&nbsp;&nbsp; &nbsp;obj-&#62;run();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return a.exec();</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>Файл scriptobject.cpp</strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &quot;scriptobject.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">ScriptObject::ScriptObject(QObject *parent) :</div><div class="code_line">&nbsp;&nbsp; &nbsp;QObject(parent)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;engine = new QScriptEngine(this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;QScriptValue scriptObj = engine-&#62;newQObject(this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;engine-&#62;globalObject().setProperty(&quot;scriptObj&quot;, scriptObj);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void ScriptObject::run(){</div><div class="code_line">&nbsp;&nbsp; &nbsp;engine-&#62;evaluate(&quot;scriptObj.exit();&quot;);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void ScriptObject::exit(){</div><div class="code_line">&nbsp;&nbsp; &nbsp;qDebug() &#60;&#60; &quot;exit...&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;qApp-&#62;exit();</div><div class="code_line">&nbsp;&nbsp; &nbsp;qDebug() &#60;&#60; &quot;...exit&quot;;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>Файл scriptobject.h</strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#ifndef SCRIPTOBJECT_H</div><div class="code_line">#define SCRIPTOBJECT_H</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;QtScript&#62;</div><div class="code_line">#include &#60;QObject&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">class ScriptObject : public QObject</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;Q_OBJECT</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;QScriptEngine *engine;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;explicit ScriptObject(QObject *parent = 0);</div><div class="code_line">&nbsp;</div><div class="code_line">signals:</div><div class="code_line">&nbsp;</div><div class="code_line">public slots:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void run();</div><div class="code_line">&nbsp;&nbsp; &nbsp;Q_INVOKABLE void exit();</div><div class="code_line">&nbsp;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">#endif // SCRIPTOBJECT_H</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>Вывод приложения:</strong><br>
<em class='tag-i'>exit...<br>
...exit</em><br>
<br>
А теперь то, над чем парюсь уже 2-ю неделю... КАКОГО???<br>
Между двумя выхлопами по идее должен произойти ахтунг, а приложение просто не завершается&#33;&#33;&#33;<br>
Пните хоть где копать...]]></description>
        <author>metej</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      </channel>
      </rss>
	