<?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=463809&amp;view=findpost&amp;p=3925728</guid>
        <pubDate>Sat, 19 Jul 2025 17:30:29 +0000</pubDate>
        <title>Как реализовать страничность в gtkmm?</title>
        <link>https://forum.sources.ru/index.php?showtopic=463809&amp;view=findpost&amp;p=3925728</link>
        <description><![CDATA[1datr: Короче делаешь абстрактный класс типа PageWidget который возвращает главному окну нужную инфу. <br>Теперь остаётся вопрос такой. В glade- файлах нельзя разместить просто виджет без окна. То есть вытащил из ресурсов окно потом из этого окна взять нужный виджет, отсоединить его от его окна и впендюрить куда надо или клонировать его и клон впендюрить. Как это сделать?]]></description>
        <author>1datr</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=463809&amp;view=findpost&amp;p=3925483</guid>
        <pubDate>Tue, 15 Jul 2025 09:34:18 +0000</pubDate>
        <title>Как реализовать страничность в gtkmm?</title>
        <link>https://forum.sources.ru/index.php?showtopic=463809&amp;view=findpost&amp;p=3925483</link>
        <description><![CDATA[1datr: <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;gtkmm.h&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">class MainWindow : public Gtk::ApplicationWindow {</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MainWindow(BaseObjectType* obj, Glib::RefPtr&#60;Gtk::Builder&#62; const&amp; builder)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: Gtk::ApplicationWindow(obj)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;, builder{builder}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;builder-&#62;get_widget(&quot;mainbox&quot;,mainbox); &nbsp; &nbsp; // контейнер страниц</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Gtk::FlowBox* menu_main = nullptr;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;builder-&#62;get_widget(&quot;menu_main&quot;, menu_main); // главное меню</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(menu_main) &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mainbox-&#62;pack_start( btn1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mainbox-&#62;pack_start(*menu_main);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;... &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this-&#62;show_all(); &nbsp; </div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MainWindow(BaseObjectType* obj, Glib::RefPtr&#60;Gtk::Builder&#62; const&amp; builder, char *gladefile): Gtk::ApplicationWindow(obj)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;private:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Glib::RefPtr&#60;Gtk::Builder&#62; builder;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Gtk::Box *mainbox;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">int add_glade_res(Glib::RefPtr&#60;Gtk::Builder&#62; refBuilder, char* gxml_path)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;try{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;refBuilder-&#62;add_from_resource(gxml_path);</div><div class="code_line">&nbsp;&nbsp; &nbsp;} catch (...){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::cerr &#60;&#60; &quot;Error loading glade map resource&quot; &#60;&#60; gxml_path &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 1;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int on_cmd(const Glib::RefPtr&#60;Gio::ApplicationCommandLine&#62; &amp;,</div><div class="code_line">&nbsp;&nbsp;Glib::RefPtr&#60;Gtk::Application&#62; &amp;app) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;app-&#62;activate(); // &#60;----</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char **argv){</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto app = Gtk::Application::create(argc, argv, &quot;r21&quot;, Gio::APPLICATION_HANDLES_COMMAND_LINE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;app-&#62;signal_command_line().connect(sigc::bind(sigc::ptr_fun(on_cmd), app), false);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Load the GtkBuilder file and instantiate its widgets:</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto refBuilder = Gtk::Builder::create();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(!add_glade_res(refBuilder, &quot;/r21/glade/main.glade&quot;)) return 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(!add_glade_res(refBuilder, &quot;/r21/glade/mainmenu.glade&quot;)) return 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MainWindow *wnd = nullptr;</div><div class="code_line">&nbsp;&nbsp; &nbsp;refBuilder-&#62;get_widget_derived(&quot;main_window&quot;, wnd); </div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (wnd){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;app-&#62;run(*wnd); &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;delete wnd;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
glade файлы: <br>
main.glade<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">&#60;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&#62;</div><div class="code_line">&#60;!-- Generated with glade 3.40.0 --&#62;</div><div class="code_line">&#60;interface&#62;</div><div class="code_line">&nbsp;&nbsp;&#60;requires lib=&quot;gtk+&quot; version=&quot;3.20&quot;/&#62;</div><div class="code_line">...</div><div class="code_line">&nbsp;&nbsp;&#60;object class=&quot;GtkApplicationWindow&quot; id=&quot;main_window&quot;&#62;</div><div class="code_line">...</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;child&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&#60;object class=&quot;GtkBox&quot; id=&quot;mainbox&quot;&#62;</div><div class="code_line">...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&#60;child&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;object class=&quot;GtkToolbar&quot;&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;child&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;object class=&quot;GtkToolButton&quot; id=&quot;main_btn_connect&quot;&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;/object&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;packing&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;property name=&quot;expand&quot;&#62;False&#60;/property&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;property name=&quot;homogeneous&quot;&#62;True&#60;/property&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;/packing&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;/child&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;child&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;object class=&quot;GtkMenuToolButton&quot; id=&quot;main_btn_help&quot;&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;/object&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp;&#60;/object&#62;</div><div class="code_line">&#60;/interface&#62;</div></ol></div></div></div></div><br>
mainmenu.glade:<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">&#60;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&#62;</div><div class="code_line">&#60;!-- Generated with glade 3.40.0 --&#62;</div><div class="code_line">&#60;interface&#62;</div><div class="code_line">&nbsp;&nbsp;&#60;requires lib=&quot;gtk+&quot; version=&quot;3.24&quot;/&#62;</div><div class="code_line">&nbsp;&nbsp;&#60;object class=&quot;GtkWindow&quot;&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;child&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&#60;object class=&quot;GtkFlowBox&quot; id=&quot;menu_main&quot;&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&#60;property name=&quot;visible&quot;&#62;True&#60;/property&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&#60;property name=&quot;can-focus&quot;&#62;False&#60;/property&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&#60;child&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&#60;/child&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&#60;/object&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#60;/child&#62;</div><div class="code_line">&nbsp;&nbsp;&#60;/object&#62;</div><div class="code_line">&#60;/interface&#62;</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-07-15T09:37:38+00:00">15.07.25, 09:37</time></span></span><br>
Как в glade-файлах делать просто FlowBox без окна чтобы без родительского окна я не знаю. Пробовал OffscreenBox не помогает.]]></description>
        <author>1datr</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=463809&amp;view=findpost&amp;p=3925482</guid>
        <pubDate>Tue, 15 Jul 2025 09:32:11 +0000</pubDate>
        <title>Как реализовать страничность в gtkmm?</title>
        <link>https://forum.sources.ru/index.php?showtopic=463809&amp;view=findpost&amp;p=3925482</link>
        <description><![CDATA[Majestio: Положа честную лапу на доброе сердце ...=) GTK никогда не юзал. Но, если ты выложишь сюда тестовый пример - обещаю, попробую разобраться. Ну конечно, в меру моих сил  :whistle:]]></description>
        <author>Majestio</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=463809&amp;view=findpost&amp;p=3925475</guid>
        <pubDate>Tue, 15 Jul 2025 08:19:41 +0000</pubDate>
        <title>Как реализовать страничность в gtkmm?</title>
        <link>https://forum.sources.ru/index.php?showtopic=463809&amp;view=findpost&amp;p=3925475</link>
        <description><![CDATA[1datr: С использованием glade. Есть главное окно в одном glade-файле, там есть контейнер Gtk::Box. Есть другой glade-файл, там окно в котором Gtk::FlowBox с кнопками. Его надо достать и вставить в Gtk::Box главного окна. И таких файлов со страницами несколько плюс там еще свой код и каллбеки. Как это реализовать? Есть ли примеры?<br>Когда просто получаешь билдером этот FlowBox и вставляешь потом в Box не вставляется. Видимо, надо как-то клонировать этот FlowBox или извлекать, а потом вставлять в другой контейнер.]]></description>
        <author>1datr</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      </channel>
      </rss>
	