<?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=453076&amp;view=findpost&amp;p=3917029</guid>
        <pubDate>Sun, 02 Feb 2025 15:24:34 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3917029</link>
        <description><![CDATA[tumanovalex: Спасибо, попробую]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3917025</guid>
        <pubDate>Sun, 02 Feb 2025 02:54:12 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3917025</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=453076&view=findpost&p=3917022'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2025-02-01T17:25:34+00:00">01.02.25, 17:25</time></span><div class='quote '> При максимизации экрана это расстояние становится большим.</div></div><br>
Ну я твой код не буду переписывать. Просто посмотри как работает &quot;расширитель&quot;, сделай тестовый пример:<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">Dialog::Dialog(QWidget *parent)</div><div class="code_line">&nbsp;&nbsp; &nbsp;: QDialog(parent) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;QVBoxLayout *L = new QVBoxLayout();</div><div class="code_line">&nbsp;&nbsp; &nbsp;QPushButton *B1 = new QPushButton(&quot;111&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;QPushButton *B2 = new QPushButton(&quot;222&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;QPushButton *B3 = new QPushButton(&quot;333&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(B1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(B2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(B3);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addStretch(1); // посмотри как эта строчка влияет - пробуй ее закомментировать и пересобрать, потом сними комменты и опять пересобери</div><div class="code_line">&nbsp;&nbsp; &nbsp;setLayout(L);</div><div class="code_line">&nbsp;&nbsp; &nbsp;setMinimumSize(640,480);</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></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=453076&amp;view=findpost&amp;p=3917024</guid>
        <pubDate>Sun, 02 Feb 2025 01:52:17 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3917024</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=453076&view=findpost&p=3917022'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2025-02-01T17:25:34+00:00">01.02.25, 17:25</time></span><div class='quote '>Подскажите, пожалуйста, каким графическим редактором лучше пользоваться для нанесения разноцветных стрелок, овалов и надписей на рисунках. Я пользуюсь XnView, в этой программе мне не удалось сделать стрелки и овалы.</div></div><br>
Для получения скриншотов и быстрого нанесения там же линий, стрелок и прямоугольников лучше всего использовать <a class='tag-url' href='https://app.prntscr.com/ru/' target='_blank'>Lightshot</a>.]]></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=453076&amp;view=findpost&amp;p=3917022</guid>
        <pubDate>Sat, 01 Feb 2025 17:25:34 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3917022</link>
        <description><![CDATA[tumanovalex: При запуске программы расстояние между меткой с надписью &quot;Выбран файл для записи результатов&quot; и групбоксами ниже небольшое. При максимизации экрана это расстояние становится большим. Скриншоты и проект без setFixedSize прикрепил. Подскажите, пожалуйста, каким графическим редактором лучше пользоваться для нанесения разноцветных стрелок, овалов и надписей на рисунках. Я пользуюсь XnView, в этой программе мне не удалось сделать стрелки и овалы.<br>
<span class="b-attach" data-size="30761" data-hits="200" data-attach-id="66783" data-attach-post-id="3917022">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3917022&amp;attach_id=66783' title='Скачать файл' target='_blank'>_____________________________.png</a> (, : 200)
		</span><br>
<span class="b-attach" data-size="96890" data-hits="191" data-attach-id="66784" data-attach-post-id="3917022">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3917022&amp;attach_id=66784' title='Скачать файл' target='_blank'>_______________________.jpg</a> (, : 191)
		</span><br>
<span class="b-attach" data-size="4350" data-hits="62" data-attach-id="66785" data-attach-post-id="3917022">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3917022&amp;attach_id=66785' title='Скачать файл' target='_blank'>qtAdc.zip</a> (, : 62)
		</span> <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-02-01T17:28:35+00:00">01.02.25, 17:28</time></span></span><br>
Хотелось бы также научиться задавать расстояние между групбоксами, например групбоксом &quot;Параметры настройки...&quot; и групбоксами &quot;Сохранение настроек&quot; и &quot;Работа с АЦП&quot;. Сейчас они придвинулись вплотную, а хотелось бы установить заданное расстояние.]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3917017</guid>
        <pubDate>Sat, 01 Feb 2025 09:41:19 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3917017</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=453076&view=findpost&p=3916982'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2025-01-31T10:24:04+00:00">31.01.25, 10:24</time></span><div class='quote '>Не очень понял, почему изменение значений в addStretch не изменяет расположения layLower по отношению к grbParamsData.</div></div><br>
Дам наводку. Хотя тебе бы было более полезно самому RTFM. Как работает <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">addStretch</span></span>? Это, считай, &quot;псевдо-виджет&quot;, который просто вставляет пустое пространство, которое может раздвигать соседние элементы в лайауте.<br>
<br>
<strong class='tag-b'>Простой вариант:</strong> есть несколько виджетов, вставленных в лауаут, и один addStretch(1)  - он эти элементы раздвинет влево-вправо, или вверх-вниз, в зависимости от типа лайаута<br>
<strong class='tag-b'>Более сложный вариант:</strong> есть несколько виджетов, вставленных в лауаут, и есть несколько addStretch, пусть один будет с аргументом 1, а второй 3. Они также будут раздвигать соседние виджеты. Но тут разница в том, что первый <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">addStretch</span></span> постарается раздвинуть соседние элементы так, чтобы раздвигаемое пространство было примерно равно 1/3 раздвигаемому пространству второго <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">addStretch</span></span>.<br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Лайфхак&#33; :lol:</strong></span> <br>
<br>
Для теста таких &quot;вещей&quot; заведи подкаталог с проектами-тестами. Почитал доку, осознал, протестируй в очередном тестовом проекте. Убедись.<br>
...Ну и чтобы закрепить это &quot;действо&quot; - этот каталог назови не <strong class='tag-b'>Tests</strong>, а <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">Testo</span></strong>. В честь моих когда-то таких же &quot;стартов&quot;, когда тесты нужно было месить как тесто :lol: А иначе никак - в то время для меня тогдашнего так не хватало меня сегодняшнего.]]></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=453076&amp;view=findpost&amp;p=3917015</guid>
        <pubDate>Sat, 01 Feb 2025 08:10:24 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3917015</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>tumanovalex</strong>, лучше покажи скрин, и на нем стрелками укажи что не нравится, и что куда нужно передвинуть.]]></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=453076&amp;view=findpost&amp;p=3916982</guid>
        <pubDate>Fri, 31 Jan 2025 10:24:04 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916982</link>
        <description><![CDATA[tumanovalex: Получилось с помощью addStretch и setFixedSize:<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">grbChannels-&#62;setFixedSize(350, 60);</div><div class="code_line">........</div><div class="code_line">grbParamsData-&#62;setFixedSize(600, 300);</div><div class="code_line">........</div><div class="code_line">QVBoxLayout *layLower = new QVBoxLayout();</div><div class="code_line">QHBoxLayout *layButtons = new QHBoxLayout();</div><div class="code_line">layButtons-&#62;addWidget(grbSettings);</div><div class="code_line">layButtons-&#62;addWidget(grbAdc);</div><div class="code_line">layLower-&#62;addLayout(layButtons);</div><div class="code_line">layLower-&#62;addStretch(0);</div><div class="code_line">layTab0-&#62;addLayout(layLower, 1, 0, Qt::AlignLeft);</div></ol></div></div></div></div>Не очень понял, почему изменение значений в addStretch не изменяет расположения layLower по отношению к grbParamsData. При разных значениях addStretch layLower подтягивается к layParamsData, при нуле то же самое. Наверное, использовать setFixedSize неправильно (не универсально для разных мониторов), но как сделать правильно я не знаю. Надеюсь на Вашу помощь в виде пояснений. Проект прикрепил.<br>
<span class="b-attach" data-size="4349" data-hits="58" data-attach-id="66780" data-attach-post-id="3916982">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3916982&amp;attach_id=66780' title='Скачать файл' target='_blank'>qtAdc.zip</a> (, : 58)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916627</guid>
        <pubDate>Fri, 24 Jan 2025 17:16:10 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916627</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>tumanovalex</strong>, как мы договаривались ранее - я тебе код не пишу. Но даю наводку ...<br>
Если хочешь элементы управления в твоём гриде &quot;отталкивать&quot; в какую либо сторону (или стороны) - используй <a class='tag-url' href='https://doc.qt.io/qt-6/qboxlayout.html#addStretch' target='_blank'>addStretch</a>. Читай доки, ищи примеры.]]></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=453076&amp;view=findpost&amp;p=3916624</guid>
        <pubDate>Fri, 24 Jan 2025 13:20:13 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916624</link>
        <description><![CDATA[tumanovalex: Решил использовать для первой вкладки QGridLayout:<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">void MainWindow::SetupWidgets() {</div><div class="code_line">&nbsp;&nbsp;setWindowTitle(&quot;Такая программка&quot;);</div><div class="code_line">&nbsp;&nbsp;setMinimumSize(640,480);</div><div class="code_line">&nbsp;&nbsp;// Инициализирование табов и помещение в макет</div><div class="code_line">&nbsp;&nbsp;TabWidget = new QTabWidget;</div><div class="code_line">&nbsp;&nbsp;for (auto i=0; i&#60;3; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Tabs.push_back(new QWidget);</div><div class="code_line">&nbsp;&nbsp;TabWidget-&#62;addTab(Tabs[0],&quot;Настройка программы&quot;);</div><div class="code_line">&nbsp;&nbsp;TabWidget-&#62;addTab(Tabs[1],&quot;Графики&quot;);</div><div class="code_line">&nbsp;&nbsp;TabWidget-&#62;addTab(Tabs[2],&quot;Вывод результатов&quot;);</div><div class="code_line">&nbsp;&nbsp;setCentralWidget(TabWidget);</div><div class="code_line">&nbsp;&nbsp;// Создание лайаута для таба 0</div><div class="code_line">&nbsp;&nbsp;QGridLayout *layTab0 = new QGridLayout;</div><div class="code_line">&nbsp;&nbsp;Tabs[0]-&#62;setLayout(layTab0);</div><div class="code_line">&nbsp;&nbsp;// Создание групбокса &quot;Каналы&quot;</div><div class="code_line">&nbsp;&nbsp;QGroupBox *grbChannels = new QGroupBox(&quot;Каналы&quot;);</div><div class="code_line">&nbsp;&nbsp;for (auto i = 0; i &#60; 16; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Checks.push_back(new QCheckBox(QString::number(i+1)));</div><div class="code_line">&nbsp;&nbsp;QGridLayout *layCheck = new QGridLayout;</div><div class="code_line">&nbsp;&nbsp;grbChannels-&#62;setLayout(layCheck);</div><div class="code_line">&nbsp;&nbsp;for (int i = 0; i &#60; 16; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;layCheck-&#62;addWidget (Checks[i], i % 8, i / 8);</div><div class="code_line">&nbsp;&nbsp;grbChannels-&#62;setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);</div><div class="code_line">&nbsp;&nbsp;layTab0-&#62;addWidget(grbChannels, 0, 0, Qt::AlignLeft);</div><div class="code_line">}</div></ol></div></div></div></div>Вид grbChannels не нравится: сверху и снизу флажков много свободного места и расстояние между флажками большое. При разворачивании экрана вид еще хуже. Подскажите, пожалуйста, как улучшить вид групбокса и сделать так, чтобы при максимизации экрана размеры групбокса не изменялись.<br>
<span class="b-attach" data-size="4318" data-hits="231" data-attach-id="66760" data-attach-post-id="3916624">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3916624&amp;attach_id=66760' title='Скачать файл' target='_blank'>________________.png</a> (, : 231)
		</span><br>
<span class="b-attach" data-size="3398" data-hits="70" data-attach-id="66761" data-attach-post-id="3916624">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3916624&amp;attach_id=66761' title='Скачать файл' target='_blank'>qtAdc.zip</a> (, : 70)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916562</guid>
        <pubDate>Thu, 23 Jan 2025 20:09:43 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916562</link>
        <description><![CDATA[SergeyIT: <strong class='tag-b'>Majestio</strong>, спасибо, не видел этого обсуждения.]]></description>
        <author>SergeyIT</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916561</guid>
        <pubDate>Thu, 23 Jan 2025 19:29:02 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916561</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>SergeyIT</strong>, в принципе примитивные статические формы в QtCreator&#39;е делать можно. Как говорят на &quot;вкус и цвет&quot; ... Но я по опыту просто не советую. Со временем и простые формы кодировать получается не сильно медленнее, чем &quot;рисовать&quot; в дизайнере. Повторяться не буду, тут уже <a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=452788' target='_blank'>было обширное обсуждение</a>.]]></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=453076&amp;view=findpost&amp;p=3916560</guid>
        <pubDate>Thu, 23 Jan 2025 19:12:08 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916560</link>
        <description><![CDATA[SergeyIT: А вообще в QtCreator сейчас дизайнером пользоваться можно? Как оно?<br>ЗЫ<br>Переделывал в 2008г. программы на Дельфи в QTcreator на С++ (перешел на линукс). С дизайнером не получилось справиться. Рисовал окна и контролы, вроде нормально было, а когда что-то изменить надо было, получалось криво.<br>Плюнул и сделал все в рантайме - все стало хорошо.<br>Кстати, часть программ скомпилил в Lazarus - без проблем.]]></description>
        <author>SergeyIT</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916543</guid>
        <pubDate>Thu, 23 Jan 2025 15:09:04 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916543</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>tumanovalex</strong>, есть два варианта:<br>
<br>
1) Ты возвращаешь тип формы как <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">QDialog</span></span>, и добавляешь необходимые системные иконки путём вызова в конструкторе:<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">setWindowFlags(windowFlags() | Qt::WindowMinMaxButtonsHint);</div></ol></div></div></div></div><br>
Не тестировал, написал навскидку. Лучше все же ознакомится с темой <a class='tag-url' href='https://doc.qt.io/qt-6/qtwidgets-widgets-windowflags-example.html' target='_blank'>Window Flags</a><br>
<br>
2) Твой вариант с <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">QMainWindow</span></span>. Тут немного по-другому. Сперва создаётся <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">QWidget</span></span> самого верхнего уровня. В него собирается всё содержимое окна. Потом этот виджет устанавливается в качестве центрального с помощью <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">setCentralWidget(QWidget *widget)</span></span> (<a class='tag-url' href='https://doc.qt.io/qt-6/qmainwindow.html#setCentralWidget' target='_blank'>ссылка</a>). <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-01-23T15:20:16+00:00">23.01.25, 15:20</time></span></span><br>
Да, еще ... есть разница в показе формы как диалога из <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">main.cpp</span></span>:<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">dialog.exec(); // Модальный режим</div><div class="code_line">//или</div><div class="code_line">dialog.show(); // Немодальный режим</div></ol></div></div></div></div>]]></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=453076&amp;view=findpost&amp;p=3916542</guid>
        <pubDate>Thu, 23 Jan 2025 14:39:18 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3916542</link>
        <description><![CDATA[tumanovalex: Здравствуйте&#33;<br>
Немного изменил проект Dialog Majestio - сделал несколько файлов (архив qtTestLayout.zip). Все нормально работает, элементы управления на форме появляются. Поскольку в программе на C# форма имеет кнопки изменения размеров окна, решил заменить Dialog на MainWindow. Программа компилируется, но элементы управления не создаются, появляется просто пустая форма с заголовком. Отладчик показывает, что при выполнении программы метод SetupWidgets вызывается и операторы в нем выполняются. Помогите, пожалуйста, разобраться, почему так происходит. Проект прикрепил.<br>
<span class="b-attach" data-size="4816" data-hits="68" data-attach-id="66752" data-attach-post-id="3916542">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3916542&amp;attach_id=66752' title='Скачать файл' target='_blank'>qtTestLayout.zip</a> (, : 68)
		</span><br>
<span class="b-attach" data-size="591" data-hits="65" data-attach-id="66753" data-attach-post-id="3916542">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3916542&amp;attach_id=66753' title='Скачать файл' target='_blank'>qtAdc.pro</a> (, : 65)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914224</guid>
        <pubDate>Tue, 03 Dec 2024 15:30:24 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914224</link>
        <description><![CDATA[tumanovalex: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=453076&view=findpost&p=3914221'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-03T14:38:06+00:00">03.12.24, 14:38</time></span><div class='quote '>Ну тут не посмотрел</div></div>Да мне не к спеху, еще много чего нужно освоить. Спасибо за ответ. По-моему мнению, у меня конфигурация очень простая и не объемная. Наверное, пока сгодится QSettings. А дальше будет видно.]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914221</guid>
        <pubDate>Tue, 03 Dec 2024 14:38:06 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914221</link>
        <description><![CDATA[Majestio: Ну тут не посмотрел - немного напряг со временем. Чуть позже, если разгребусь. Но сразу советы-аксиомы:<br>
<br>
1) Любой вид контрола/виджета - мы всегда добавляем в лайаут родителя<br>
2) В лайаут родителя мы можем добавлять не только контролы, но и дочерние лайауты (это если необходимо создать сложную структуру размещений)<br>
3) Если мы хотим контрол сделать чьи-то родителем, мы должны создать новый лаяут, и установить его в этот контрол. Тогда, добавляя прочие контролы в созданный лайаут, мы фактически добавляем их &quot;в контрол&quot;. Это обычно бывает с группирующими контролами.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=453076&view=findpost&p=3914071'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2024-11-30T18:17:49+00:00">30.11.24, 18:17</time></span><div class='quote '>В старой программе на C# я сохранял и загружал файлы в виде сsv файлов</div></div><br>
CSV - очень древнее, и сейчас не самое хорошее решение. Мои варианты следующие:<br>
<br>
<ol class="tag-list" type="1"><li>Формат JSON - идеальное решение. Для жутко сложных конфигураций - то, что доктор прописал. Хорошо поддерживается и автоформатируется в Visual Code/Visual Codium с плагинами</li><li>Формат SQLite3 - хорошее решение для относительно простых, но жутко объёмных конфигураций. Там наиболее быстрый поиск, да и запись скорее всего. Есть хорошие менеджеры БД для него. Мне <a class='tag-url' href='https://rutracker.org/forum/viewtopic.php?t=5911577' target='_blank'>нравится этот</a>. Вообще бомба.</li></ol><br>
Оба вышеуказанных формата, и <a class='tag-url' href='https://doc.qt.io/qt-6/json.html' target='_blank'>JSON</a>, и <a class='tag-url' href='https://doc.qt.io/qt-6/sql-driver.html' target='_blank'>SQLite3</a> - хорошо поддерживаются Qt.]]></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=453076&amp;view=findpost&amp;p=3914071</guid>
        <pubDate>Sat, 30 Nov 2024 18:17:49 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914071</link>
        <description><![CDATA[tumanovalex: В первом приближении сделал интерфейс вкладки &quot;Настройки программы&quot;. Также попробовал получить параметры из этой вкладки. Не смог понять, как получить состояние всех чекбоксов в групбоксе &quot;Каналы&quot;. Также хотел посоветоваться по поводу сохранения, загрузки и сбросу настроек. В старой программе на C# я сохранял и загружал файлы в виде сsv файлов, чтобы их можно было редактировать в текстовом редакторе. Очень нужны критика, замечания и предложения по интерфейсу программы, поскольку это мой первый опыт проекта на QT. Проект прикрепил.<br>
<span class="b-attach" data-size="3000" data-hits="95" data-attach-id="66565" data-attach-post-id="3914071">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3914071&amp;attach_id=66565' title='Скачать файл' target='_blank'>qtTestLayout.zip</a> (, : 95)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914049</guid>
        <pubDate>Fri, 29 Nov 2024 13:14:52 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914049</link>
        <description><![CDATA[tumanovalex: Понятно. Интерфейс закончу на следующей неделе. Очень понравилось делать интерфейс без редактора. Большое спасибо за совет делать его без дизайнера&#33;]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914040</guid>
        <pubDate>Fri, 29 Nov 2024 12:04:17 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3914040</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>tumanovalex</strong>, я обычно разделяю &quot;сетап&quot; контроллов и потом сетап коннектов. Как это делать - дело &quot;вкусовщины&quot;&#33;. Можно просто тупо в конструкторе, можно разносить в методы, это дело - предпочтений. Мой подход &quot;<a class='tag-url' href='https://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B8%D1%82%D0%B2%D0%B0_%D0%9E%D0%BA%D0%BA%D0%B0%D0%BC%D0%B0' target='_blank'>Не плодить сущностей без необходимости</a>&quot;. По ссылке выше - &quot;математическая часть&quot; =)]]></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=453076&amp;view=findpost&amp;p=3913909</guid>
        <pubDate>Thu, 28 Nov 2024 05:15:42 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913909</link>
        <description><![CDATA[tumanovalex: Спасибо за ответ. Понятно.]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913908</guid>
        <pubDate>Thu, 28 Nov 2024 01:45:26 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913908</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>tumanovalex</strong>, &quot;сетап&quot; можно конечно разнести на n-методов. Но я бы не советовал такое делать. Лучше будет делать в одном методе - НО код комментировать. Т.е. просто комментариями визуально разделять &quot;шаги&quot;. Это конечно дело вкуса. Если такое не нравится - безусловно можно сделать набор методов, а-ля <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">setupCombo</span></span>, <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">setupSpin</span></span>, <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">setupButtons</span></span> и вызывать их последовательно в конструкторе. Но в этом лично я какого-то профита не вижу.]]></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=453076&amp;view=findpost&amp;p=3913907</guid>
        <pubDate>Wed, 27 Nov 2024 19:26:15 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913907</link>
        <description><![CDATA[tumanovalex: При создании интерфейса функция SetupWidgetsForm очень сильно разрастается. А можно ли в QT сделать следующее:<br>- создать в каком-то методе (классе) один элемент интерфейса, например комбобокс;<br>- создать в другом методе (классе) другой элементы интерфейса, например набор спиннеров;<br>- создать набор кнопок для сохранения, загрузки, очистки настроек и т.д.<br>А затем прикрепить их к нужным лайаутам и разместить на форме?<br>Или это мои фантазии и так делать QT не умеет (или это не нужно)? Как сложный интерфейс делают специалисты по QT без использования дизайнера?]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913336</guid>
        <pubDate>Sun, 17 Nov 2024 10:03:38 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913336</link>
        <description><![CDATA[tumanovalex: Спасибо огромное&#33; Я только сейчас стал понимать, почему не следует использовать дизайнер. Все больше нравится QT. Буду дальше разбираться.]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913335</guid>
        <pubDate>Sun, 17 Nov 2024 06:52:29 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913335</link>
        <description><![CDATA[Majestio: Ну вот смотри, я набросал тебе макет твоей программы.<br>
<br>
<span class="b-attach" data-size="9912" data-hits="434" data-attach-id="66530" data-attach-post-id="3913335">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3913335&amp;attach_id=66530' title='Скачать файл' target='_blank'>sample.png</a> (, : 434)
		</span><br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">dialog.h</span></strong><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">#ifndef DIALOG_H</div><div class="code_line">#define DIALOG_H</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;QtWidgets&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">class Dialog : public QDialog {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Q_OBJECT</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;QTabWidget *TabWidget;</div><div class="code_line">&nbsp;&nbsp;QVector&#60;QWidget*&#62; Tabs;</div><div class="code_line">&nbsp;&nbsp;QVector&#60;QCheckBox*&#62; Checks;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dialog(QWidget* parent = nullptr);</div><div class="code_line">&nbsp;&nbsp; &nbsp;~Dialog();</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetupWidgetsForm();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">};</div><div class="code_line">#endif // DIALOG_H</div></ol></div></div></div></div><br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">dialog.cpp</span></strong><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">#include &quot;dialog.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">Dialog::Dialog(QWidget* parent)</div><div class="code_line">&nbsp;&nbsp;: QDialog(parent) {</div><div class="code_line">&nbsp;&nbsp;SetupWidgetsForm();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">Dialog::~Dialog() {</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Dialog::SetupWidgetsForm() {</div><div class="code_line">&nbsp;&nbsp;setWindowTitle(&quot;Такая программка&quot;);</div><div class="code_line">&nbsp;&nbsp;// Создание макета самой формы и сразу его установка</div><div class="code_line">&nbsp;&nbsp;QVBoxLayout* layout = new QVBoxLayout;</div><div class="code_line">&nbsp;&nbsp;setLayout(layout);</div><div class="code_line">&nbsp;&nbsp;setMinimumSize(640,480);</div><div class="code_line">&nbsp;&nbsp;// Инициализирование табов и помещение в макет</div><div class="code_line">&nbsp;&nbsp;TabWidget = new QTabWidget;</div><div class="code_line">&nbsp;&nbsp;for (auto i=0; i&#60;3; i++) Tabs.push_back(new QWidget);</div><div class="code_line">&nbsp;&nbsp;TabWidget-&#62;addTab(Tabs[0],&quot;Настройка программы&quot;);</div><div class="code_line">&nbsp;&nbsp;TabWidget-&#62;addTab(Tabs[1],&quot;Графики&quot;);</div><div class="code_line">&nbsp;&nbsp;TabWidget-&#62;addTab(Tabs[2],&quot;Вывод результатов&quot;);</div><div class="code_line">&nbsp;&nbsp;layout-&#62;addWidget(TabWidget);</div><div class="code_line">&nbsp;&nbsp;// Заполнение таба &quot;Настройка программы&quot;</div><div class="code_line">&nbsp;&nbsp;QVBoxLayout *outerLayout = new QVBoxLayout;</div><div class="code_line">&nbsp;&nbsp;Tabs[0]-&#62;setLayout(outerLayout);</div><div class="code_line">&nbsp;&nbsp;QHBoxLayout *upperLayout = new QHBoxLayout;</div><div class="code_line">&nbsp;&nbsp;outerLayout-&#62;addLayout(upperLayout);</div><div class="code_line">&nbsp;&nbsp;QGroupBox *channels = new QGroupBox(&quot;Каналы&quot;);</div><div class="code_line">&nbsp;&nbsp;upperLayout-&#62;addWidget(channels);</div><div class="code_line">&nbsp;&nbsp;for (auto i = 0; i &#60; 16; ++i) Checks.push_back(new QCheckBox(QString::number(i+1)));</div><div class="code_line">&nbsp;&nbsp;QGridLayout *checkLayout = new QGridLayout;</div><div class="code_line">&nbsp;&nbsp;channels-&#62;setLayout(checkLayout);</div><div class="code_line">&nbsp;&nbsp;for (auto i = 0; i &#60; 16; ++i) checkLayout-&#62;addWidget(Checks[i], i % 8, i / 8);</div><div class="code_line">&nbsp;&nbsp;QPushButton *filler1 = new QPushButton(&quot;Потом&quot;);</div><div class="code_line">&nbsp;&nbsp;QPushButton *filler2 = new QPushButton(&quot;Потом&quot;);</div><div class="code_line">&nbsp;&nbsp;filler1-&#62;setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);</div><div class="code_line">&nbsp;&nbsp;filler2-&#62;setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);</div><div class="code_line">&nbsp;&nbsp;upperLayout-&#62;addWidget(filler1);</div><div class="code_line">&nbsp;&nbsp;upperLayout-&#62;addWidget(filler2);</div><div class="code_line">&nbsp;&nbsp;QPushButton *filler3 = new QPushButton(&quot;Потом будет заполняться&quot;);</div><div class="code_line">&nbsp;&nbsp;filler3-&#62;setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);</div><div class="code_line">&nbsp;&nbsp;outerLayout-&#62;addWidget(filler3);</div><div class="code_line">}</div></ol></div></div></div></div><br>
Ну и сразу замечания. Места в макете, которые планируется дальше заполнять, я временно занял кнопками, растянутыми на всю доступную площадь. Когда до этих областей доберешься - вместо вставки кнопки вставляй нужный тебе лайяут, и в него уже добавляй контролы. Что касается чекбоксов - я их поместил в два ряда в <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">QGridLayout</span></span>. И обрати внимание, что все контролы, которые как-то будут взаимодействовать с пользователем или между собою - нужно объявлять полями класса. Иначе в других методах класса к ним доступа не будет, хотя они будут отображаться и висеть в памяти. Локальные объявки допустимы только для лайяутов. И то, если ты не собираешься в динамике добавлять или удалять контролы.<br>
<br>
Кстати. Посмотри важное преимущество &quot;ручной&quot; сборки формы. Я однотипные элементы, для удобства, могу собирать в контейнеры (вектора, мапы) и удобно к ним обращаться. В случае же использования дизайнера - каждое поле будет отдельной переменной. Во первых, это загромождает сам класс. А во вторых - если понадобится динамическая перекомпоновка, то используя дизайнер форм, про нее можно смело забыть.]]></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=453076&amp;view=findpost&amp;p=3913330</guid>
        <pubDate>Sat, 16 Nov 2024 15:38:43 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913330</link>
        <description><![CDATA[tumanovalex: Решил сначала попробовать сделать QGroupBox:<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">void Dialog::SetupWidgetsForm()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;QHBoxLayout *main_layout = new QHBoxLayout();</div><div class="code_line">&nbsp;&nbsp;QGroupBox *grb_chennels = new QGroupBox(&quot;Каналы&quot;);</div><div class="code_line">&nbsp;&nbsp;QVBoxLayout *grb_chennels_layout = new QVBoxLayout();</div><div class="code_line">&nbsp;&nbsp;for(int i=0; i &#60; 8; i++)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;grb_chennels_layout -&#62; addWidget(new QCheckBox(QString::number(i+1)));</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;grb_chennels -&#62; setLayout(grb_chennels_layout);</div><div class="code_line">&nbsp;&nbsp;main_layout -&#62; addWidget(grb_chennels);</div><div class="code_line">&nbsp;&nbsp;setLayout(main_layout);</div><div class="code_line">&nbsp;&nbsp;setMinimumSize(480,0);</div><div class="code_line">}</div></ol></div></div></div></div>Выводятся чекбоксы в 1 ряд. А как сделать программно массив чекбоксов, чтобы их потом разместить в Grid в 2 ряда? Я попробовал сделать так:<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">&nbsp;&nbsp;QCheckBox *arr_checkbox = new QCheckBox[16];</div><div class="code_line">&nbsp;&nbsp;for(int i=0; i &#60; 16; i++)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;arr_checkbox[i] = QCheckBox(QString::number(i+1));</div><div class="code_line">&nbsp;&nbsp;}</div></ol></div></div></div></div>получил ошибку<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">&quot;N:\MyProgramming\qtTestLayout\dialog.cpp:22: error: use of deleted function &#39;QCheckBox&amp; QCheckBox::operator=(const QCheckBox&amp;)&#39;</div><div class="code_line">..\..\dialog.cpp: In member function &#39;void Dialog::SetupWidgetsForm()&#39;:</div><div class="code_line">..\..\dialog.cpp:22:53: error: use of deleted function &#39;QCheckBox&amp; QCheckBox::operator=(const QCheckBox&amp;)&#39;</div><div class="code_line">&nbsp;&nbsp; 22 | &nbsp; &nbsp; arr_checkbox[i] = QCheckBox(QString::number(i+1));</div></ol></div></div></div></div>Подскажите, пожалуйста, как сделать массив контролов правильно.]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913326</guid>
        <pubDate>Fri, 15 Nov 2024 19:45:39 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913326</link>
        <description><![CDATA[tumanovalex: Спасибо за ответ. Как только сделаю - обязательно покажу.]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913325</guid>
        <pubDate>Fri, 15 Nov 2024 17:58:44 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913325</link>
        <description><![CDATA[Majestio: Ну в принципе более менее верно. Будет код - покажи.]]></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=453076&amp;view=findpost&amp;p=3913305</guid>
        <pubDate>Fri, 15 Nov 2024 12:17:59 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3913305</link>
        <description><![CDATA[tumanovalex: Здравствуйте&#33;<br>
Хочу попытаться реализовать на QT без дизайнера программу на C#, внешний вид который прикрепил. Иинтерфейс сделан убого, много недостатков, но основные элементы (группу чекбоксов, спинера и др.) хотелось бы иметь в программе на QT). <br>
Для начала я хотел бы реализовать первую вкладку на QTabWidget. Правильно ли я понял следующее:<br>
1. На основной форме нужно создать Layout формы. Предполагаю использовать QVBox, поскольку основным элементом интерфейса будет являться QTabWidget. Расширение функциональности программы будет идти путем добавления вкладок.<br>
2. В какой-то из Layout (предполагаю использовать Grid) включить все элементы этой вкладки. <br>
3. Создать QTabWidget с нужными параметрами (размеры и др.).<br>
4. Затем методом addTab(ссылка на Layout с элементами, &quot;Имя ярлыка вкладки&quot;) добавить вкладку.<br>
5. Затем добавить в Layout формы созданный QTabWidget.<br>
Помогите, пожалуйста, советом и критикой.<br>
<span class="b-attach" data-size="33120" data-hits="480" data-attach-id="66522" data-attach-post-id="3913305">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3913305&amp;attach_id=66522' title='Скачать файл' target='_blank'>_________________________.png</a> (, : 480)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3912973</guid>
        <pubDate>Sun, 10 Nov 2024 06:50:28 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3912973</link>
        <description><![CDATA[tumanovalex: Спасибо большое за код&#33; Конечно, лучше показывать, как надо, чтобы я мог учиться. Разбирать мой код бессмысленно, пока ничего толкового я изобразить не могу.]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3912972</guid>
        <pubDate>Sun, 10 Nov 2024 01:49:13 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3912972</link>
        <description><![CDATA[Majestio: Да, для такой формы, для красивого выравнивания -  можно использовать лайяуты <strong class='tag-b'>QGridLayout</strong> или <strong class='tag-b'>QFormLayout</strong>. Так как на форме у нас вырисовываются две колонки контролов, то <strong class='tag-b'>QFormLayout</strong> - лучший выбор, ибо <strong class='tag-b'>QGridLayout</strong> тут будет избыточен. Честно говоря мне бы не хотелось комментировать твой код, я лучше покажу как правильно делается. Код немного подчистил и добавил реализацию размещений на базе <strong class='tag-b'>QFormLayout</strong>, а заодно и подключил слот для примера:<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">dialog.h</span></strong><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">#ifndef DIALOG_H</div><div class="code_line">#define DIALOG_H</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;QtWidgets&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">class Dialog : public QDialog {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Q_OBJECT</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QLineEdit* nameInput;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QLineEdit* surnameInput;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QLineEdit* passwordInput;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QPushButton* authButton;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dialog(QWidget* parent = nullptr);</div><div class="code_line">&nbsp;&nbsp; &nbsp;~Dialog();</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SetupWidgetsForm();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;public slots:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void checkLabels(const QString &amp;text);</div><div class="code_line">&nbsp;</div><div class="code_line">};</div><div class="code_line">#endif // DIALOG_H</div></ol></div></div></div></div><br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">dialog.cpp</span></strong><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">#include &quot;dialog.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">Dialog::Dialog(QWidget* parent)</div><div class="code_line">&nbsp;&nbsp;: QDialog(parent) {</div><div class="code_line">&nbsp;&nbsp;SetupWidgetsForm();</div><div class="code_line">&nbsp;&nbsp;connect(nameInput, &amp;QLineEdit::textChanged, this, &amp;Dialog::checkLabels);</div><div class="code_line">&nbsp;&nbsp;connect(surnameInput, &amp;QLineEdit::textChanged, this, &amp;Dialog::checkLabels);</div><div class="code_line">&nbsp;&nbsp;connect(passwordInput, &amp;QLineEdit::textChanged, this, &amp;Dialog::checkLabels);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">Dialog::~Dialog() {</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Dialog::SetupWidgetsForm() {</div><div class="code_line">&nbsp;&nbsp;// Создание QFormLayout</div><div class="code_line">&nbsp;&nbsp;QFormLayout* layout = new QFormLayout();</div><div class="code_line">&nbsp;&nbsp;// Поля ввода</div><div class="code_line">&nbsp;&nbsp;nameInput = new QLineEdit();</div><div class="code_line">&nbsp;&nbsp;surnameInput = new QLineEdit();</div><div class="code_line">&nbsp;&nbsp;passwordInput = new QLineEdit();</div><div class="code_line">&nbsp;&nbsp;passwordInput-&#62;setEchoMode(QLineEdit::Password);</div><div class="code_line">&nbsp;&nbsp;// Добавление полей на форму, вернее в макет сперва</div><div class="code_line">&nbsp;&nbsp;layout-&#62;addRow(&quot;Имя:&quot;, nameInput);</div><div class="code_line">&nbsp;&nbsp;layout-&#62;addRow(&quot;Фамилия:&quot;, surnameInput);</div><div class="code_line">&nbsp;&nbsp;layout-&#62;addRow(&quot;Пароль:&quot;, passwordInput);</div><div class="code_line">&nbsp;&nbsp;// Установка выравнивания меток по правому краю</div><div class="code_line">&nbsp;&nbsp;layout-&#62;setLabelAlignment(Qt::AlignRight);</div><div class="code_line">&nbsp;&nbsp;// Кнопка Авторизации</div><div class="code_line">&nbsp;&nbsp;authButton = new QPushButton(&quot; Авторизация &quot;);</div><div class="code_line">&nbsp;&nbsp;authButton-&#62;setEnabled(false);</div><div class="code_line">&nbsp;&nbsp;// Создание горизонтального макета для кнопки для выравнивания по правому краю</div><div class="code_line">&nbsp;&nbsp;QHBoxLayout* buttonLayout = new QHBoxLayout();</div><div class="code_line">&nbsp;&nbsp;buttonLayout-&#62;addStretch(); // Добавляем растяжение слева</div><div class="code_line">&nbsp;&nbsp;buttonLayout-&#62;addWidget(authButton); // Добавляем кнопку</div><div class="code_line">&nbsp;&nbsp;// Добавление горизонтального макета с кнопкой в основной макет</div><div class="code_line">&nbsp;&nbsp;layout-&#62;addRow(buttonLayout);</div><div class="code_line">&nbsp;&nbsp;setLayout(layout);</div><div class="code_line">&nbsp;&nbsp;setWindowTitle(&quot;Форма входа&quot;);</div><div class="code_line">&nbsp;&nbsp;// Устанавливаем минимальные размеры формы, значение &quot;нуль&quot; означает</div><div class="code_line">&nbsp;&nbsp;// &quot;высоту формы взять по минимуму&quot;, но чтобы все элементы поместились</div><div class="code_line">&nbsp;&nbsp;// Хотя можно было бы вызвать и просто setMinimumWidth(480);</div><div class="code_line">&nbsp;&nbsp;setMinimumSize(480,0);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Dialog::checkLabels([[maybe_unused]] const QString&amp; text) {</div><div class="code_line">&nbsp;&nbsp;bool checkEmpty = nameInput-&#62;text().isEmpty() ||</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;surnameInput-&#62;text().isEmpty() ||</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;passwordInput-&#62;text().isEmpty();</div><div class="code_line">&nbsp;&nbsp;authButton-&#62;setEnabled(!checkEmpty);</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Изначально кнопка [Авторизация] имеет состояние &quot;не разрешена&quot;. В процессе ввода данных в поля ввода вызывается слот <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">Dialog::checkLabels</span></span>. В нем проверяется заполнение всех полей ввода. И если все заполнены, тогда кнопке авторизации устанавливается состояние &quot;разрешена&quot;.]]></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=453076&amp;view=findpost&amp;p=3912969</guid>
        <pubDate>Sat, 09 Nov 2024 17:59:21 +0000</pubDate>
        <title>Работа с QTCreator без дизайнера</title>
        <link>https://forum.sources.ru/index.php?showtopic=453076&amp;view=findpost&amp;p=3912969</link>
        <description><![CDATA[tumanovalex: Здравствуйте&#33;<br>
Использую для изучения проект Majestio из темы <a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=452788' target='_blank'>Работа с QTCreator начинающего</a>. Немного изменил проект, использую FormLayout (чтобы при изменении размеров формы не разъезжались поля для ввода). Добавил также кнопку, чтобы потом проверять логин и пароль (пока с сигналами и слотами не разобрался). Возник следующий вопрос: как только я добавляю третий HLayout - форма почему-то не появляется, а как только убираю - появляется (в проекте строки с 3 лайоутом закоментированы). Это связано со свойствами FormLayout? Проект прикрепил. У меня пока вопросы очень простые, можно будет их задавать в одной теме, чтобы не засорять ветку форума?<br>
<span class="b-attach" data-size="2069" data-hits="112" data-attach-id="66503" data-attach-post-id="3912969">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3912969&amp;attach_id=66503' title='Скачать файл' target='_blank'>qtTestLayout.zip</a> (, : 112)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      </channel>
      </rss>
	