<?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=429435&amp;view=findpost&amp;p=3874583</guid>
        <pubDate>Thu, 25 Aug 2022 17:31:32 +0000</pubDate>
        <title>Его величество MSYS2</title>
        <link>https://forum.sources.ru/index.php?showtopic=429435&amp;view=findpost&amp;p=3874583</link>
        <description><![CDATA[Majestio: Буэнос диас, амигос&#33;<br>
<br>
Тема возникла ну почти внезапно, с <a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=429405' target='_blank'>подачи нашего форумчанина Rodion</a>...<br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Маленькая предыстория</strong></span><br>
<br>
Я помню свои первые мучительные &quot;изыскания&quot; в 2011 году c <strong class='tag-b'>Qt5</strong>. Тема хорошая, прекрасная - но геморроя просто выше крыши. А тот проект по времени поджимал просто адово&#33; Слава Богам я набрел на проект <a class='tag-url' href='https://mxe.cc' target='_blank'>mxe.cc</a>, проникся, поставил его на виртуальную машину под линуха (ныне это Linux Manjaro) и просто забыл о бедах. Ну ваапще и полностью забыл&#33;<br>
<br>
Однако часто вижу в сети страдальцев &quot;<strong class='tag-b'>а-ля - не могу собрать драйвер БД в Qt</strong>&quot;. И после этого меня всегда настигает эмпатия в виде нестерпимой боли&#33; Но сегодня я почти кросава - я напрягся и вспомнил, видел в сети проект <strong class='tag-b'>MSYS2</strong>. Да, это не полная виртуализация, скорее эмуляция. Но там все собирается с пакетов, а-ля арч-линукс&#33; Используя утиль&quot;pacman&quot;.<br>
<br>
<strong class='tag-b'>Плюсики</strong><br>
<ol class="tag-list" type="1"><li>Виртуализации нет - работаем практически на родном железе - а это скорость</li><li>UNIX-way подход к сборкам, unix-утилиты готовы к работе</li></ol><br>
<strong class='tag-b'>Минусики</strong><br>
<ol class="tag-list" type="1"><li>Виртуализация подразумевает полный функционал. А тут &quot;огрызок&quot;, даже утилиты  Valgrind не наблюдается</li><li>Это не настоящая &quot;unix-среда&quot;? и QtCreator немного в ней тупит.</li></ol><br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Начинаем пользоваться MSYS2</strong></span><br>
<br>
Сперва выкачиваем дистрибутив со странички <a class='tag-url' href='https://www.msys2.org' target='_blank'>https://www.msys2.org</a> и устанавливаем. Особое внимание на предупреждение с того сайта <strong class='tag-b'>&quot;Enter your desired Installation Folder (<span class="tag-color tag-color-named" data-value="red" style="color: red">short ASCII-only path</span> on a NTFS volume, no accents, no spaces, no symlinks, no subst or network drives, no FAT&quot;</strong>. Поэтому я выбираю путь установки: <strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">E:&#092;Tools&#092;MSys64</span></strong>.<br>
<br>
Все последующие действия проводим с терминале MSYS2, который запускается командой <strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">E:&#092;Tools&#092;MSys64&#092;msys2_shell.cmd</span></strong><br>
<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">pacman -Suy</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
После этого MSYS2 попросит закрыться. Открываем окно терминала заново и продолжаем установку нужных нам пакетов:<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">pacman -S --noconfirm mc patch colordiff gdb cmake</div><div class="code_line">pacman -S --noconfirm mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-cmake mingw-w64-x86_64-extra-cmake-modules</div><div class="code_line">pacman -S --noconfirm mingw-w64-i686-gcc mingw-w64-i686-gdb mingw-w64-i686-cmake mingw-w64-i686-extra-cmake-modules</div><div class="code_line">pacman -S --noconfirm mingw-w64-x86_64-qt5 mingw-w64-x86_64-qt5-static mingw-w64-x86_64-qt5-doc</div><div class="code_line">pacman -S --noconfirm mingw-w64-i686-qt5 mingw-w64-i686-qt5-static mingw-w64-i686-qt5-doc</div><div class="code_line">pacman -S --noconfirm mingw-w64-x86_64-postgresql mingw-w64-i686-postgresql</div><div class="code_line">pacman -S --noconfirm mingw-w64-x86_64-libmariadbclient mingw-w64-i686-libmariadbclient</div><div class="code_line">pacman -S --noconfirm mingw-w64-x86_64-make mingw-w64-i686-make</div><div class="code_line">pacman -S --noconfirm mingw-w64-x86_64-jom mingw-w64-i686-jom</div></ol></div></div></div></div><br>
<br>
В результате подставилось следующее:<br>
<br>
<ol class="tag-list" type="1"><li>Midnight Commander</li><li>Утилиты patch и diff</li><li>Отладчик gdb</li><li>Утилита сборки смаке</li></ol><br>
А также для двух комплектов туллчейнов x86_64 и i686 поставилось:<br>
<br>
<ol class="tag-list" type="1"><li>Компилятор GCC</li><li>Отладчик GDB</li><li>Утилита сборки CMAKE с дополнительными модулями</li><li>Собранные комплекты Qt 5.15.3 для динамической и статической сборки + документация</li><li>Библиотеки для PostgreSQL и MySQL (MariaDB)</li><li>Утилита сборки MAKE</li><li>Утилита сборки JOM</li></ol><br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">Важное замечание:</span></strong> Почему процедура установки представлена не одной командой? Все просто. Достаточно редко, но все же, в процессе установки бывают сбои а-ля &quot;SSL timeout...&quot; при выкачивании файлов. Бывает. Решается это повторным запуском той же команды через 1-2 мин. Однако в этом случае команда переустанавливает весь софт, который уже успела установить. Вот именно для предотвращения этого мы устанавливаем &quot;порциями&quot;. Одну команду запустили, проверили, нет ошибок, запускаем следующую. Если ошибка есть, повторяем запуск, пока не получим установку без ошибок.<br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Установка QtCreator</strong></span><br>
<br>
Есть два варианта:<br>
<br>
<ol class="tag-list" type="1"><li>Ставить самый свежий с сайта, на момент написания статьи это 8.0.1</li><li>Ставить не свежий прямо в MSYS2, на момент написания статьи это 7.*</li></ol><br>
Первый вариант - зе бест&#33; Но, если вы из России или из Беларуси, в процессе установки готовьтесь увидеть сообщение <strong class='tag-b'>&quot;Your IP not allowed&quot;</strong>, ну или что-то в этом духе. Вы наверное спросите  &quot;как это пониматьвашу?&quot;. Ответ простой: санкции. Я нашел простой выход. Прописал в установщике работающий HTTP-proxy из Франции и на санкции был положен уверенный белорусский болт&#33; Установка была произведена успешно.<br>
<br>
Второй вариант - так себе, если не прошел первый. Ставим QtCreator прямо из MSYS2:<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">pacman -Ss qt-creator</div><div class="code_line">pacman -S --noconfirm mingw-w64-x86_64-qt-creator</div></ol></div></div></div></div><br>
<br>
QtCreator поставится, но подтянет за собой кучу &quot;мусора&quot; из Qt6. Запуск его ищем в недрах MSYS2, что-то а ля <strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">qtcreator.exe</span></strong><br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Настройка QtCreator</strong></span><br>
<br>
Желательно и настоятельно ... Не полагаться на авто-найденные установки, а сделать все вручную (сперва все удОлить). Запускаем QtCreator и открываем &quot;Настройки&quot;. До 8-й версии QtCreator они находились в меню &quot;Инструменты&quot;, а в 8-й версии они &quot;переехали&quot; в меню &quot;Правка&quot;. Нас интересует закладка &quot;Комплекты&quot;.  В этой закладке видим набор свойств в таб-барах:<br>
<br>
<ul class="tag-list"><li>Комплекты</li><li>Профили Qt</li><li>Компиляторы</li><li>Отладчики</li><li>CMake</li></ul><br>
Мы начинаем настройку с конца в начало, с CMаке.<br>
<br>
<strong class='tag-b'>CMake</strong><br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/8f/0d0f78d4583d57f56288d7919d99048f.png' alt='user posted image'><br>
<br>
<strong class='tag-b'>Отладчики</strong><br>
<br>
Тут я ничего не правил - меня это устроило.<br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/f6/d83147dc17c81cc64dd25289d7a6abf6.png' alt='user posted image'><br>
<br>
<strong class='tag-b'>Компиляторы</strong><br>
<br>
Авто-найденные я оставил как есть. Но руками добавил нужные мне:<br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/7c/86ad929f805530b4aee8882b6f8b7c7c.png' alt='user posted image'><br>
<br>
<strong class='tag-b'>Профили Qt</strong><br>
<br>
Заполняем. Для статической сборки с QML небольшие траблы. Кому это важно - постарайтесь развидить эту статью.<br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/aa/a334a749e28e08823d29544a1812c1aa.png' alt='user posted image'><br>
<br>
<strong class='tag-b'>Комплекты</strong><br>
<br>
Тут собираем все, учитывая учтановленные нами туллчейны. Следим за стрелочками. А в красной рамочке - &quot;вишенка&quot;  :rolleyes:  Это позволит в процессе разработки в окне вывода видеть отладочную информацию о загрузках Qt-плагинов:<br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/84/231a7b0d4b85184150dea008e9186484.png' alt='user posted image'><br>
<br>
На этом все - рабочая настроенная среда готова. Пора действовать&#33;&#33;&#33;<br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Устанавливаем и запускаем сервер БД</strong></span><br>
<br>
Давайте замутим тест работы с базами данных. Среда разработки есть - баз данных нет. Не проблема, решаем&#33; Заходим на сайт просто прекрасных людей <a class='tag-url' href='https://ospanel.io' target='_blank'>https://ospanel.io</a>, выкачиваем и устанавливаем <strong class='tag-b'>OpenServer</strong>. Настройки последнего я расписывать не буду, но сообщу - они есть&#33; :lol: <br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/b4/9e796c37c792c45d99fad05c9a5780b4.png' alt='user posted image'><br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/09/bf3f73bf4f08dd735d4f0b56e59fa609.png' alt='user posted image'><br>
<br>
А для создания БД и таблиц пользуемся инструментами:<br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/47/aa5880daa8103126396c8619c2c46747.png' alt='user posted image'><br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Тестовый тест</strong></span><br>
<br>
В QtCreator создаем проект - файлы его будут ниже. А в <strong class='tag-b'>OpenServe</strong>r запускаем PostgreSQL и MySQL, и создаем БД и таблицы. Что создавать - смотрим код проекта.<br>
<br>
<strong class='tag-b'>HelloDatabases.pro</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">QT += core gui sql</div><div class="code_line">&nbsp;</div><div class="code_line">greaterThan(QT_MAJOR_VERSION, 4): QT += widgets</div><div class="code_line">&nbsp;</div><div class="code_line">CONFIG += c++17</div><div class="code_line">&nbsp;</div><div class="code_line">SOURCES += \</div><div class="code_line">&nbsp;&nbsp; &nbsp;main.cpp \</div><div class="code_line">&nbsp;&nbsp; &nbsp;dialog.cpp</div><div class="code_line">&nbsp;</div><div class="code_line">HEADERS += \</div><div class="code_line">&nbsp;&nbsp; &nbsp;dialog.h</div><div class="code_line">&nbsp;</div><div class="code_line">qnx: target.path = /tmp/$${TARGET}/bin</div><div class="code_line">else: unix:!android: target.path = /opt/$${TARGET}/bin</div><div class="code_line">!isEmpty(target.path): INSTALLS += target</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>main.cpp</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">#include &#60;QApplication&#62;</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;&nbsp; &nbsp;Dialog w;</div><div class="code_line">&nbsp;&nbsp; &nbsp;w.show();</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'>dialog.h</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">#include &#60;QtSql&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">class Dialog : public QDialog</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;Q_OBJECT</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QTableView *Pt,*Pm;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QSqlQueryModel *Mp, *Mm;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QPushButton *BtnP, *BtnM, *BtnClose;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QSqlDatabase DbPgSql,DbMySql;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;public:</div><div class="code_line">&nbsp;</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;</div><div class="code_line">&nbsp;&nbsp;public slots:</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SlotPgSQL();</div><div class="code_line">&nbsp;&nbsp; &nbsp;void SlotMySQL();</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">#endif // DIALOG_H</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>dialog.cpp</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; &nbsp;: QDialog(parent)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;QGridLayout *L = new QGridLayout;</div><div class="code_line">&nbsp;&nbsp; &nbsp;QLabel *L1 = new QLabel(&quot;PostreSQL:&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;QLabel *L2 = new QLabel(&quot;MySQL:&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Pt = new QTableView;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Pm = new QTableView;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BtnP = new QPushButton(&quot;Прочесть&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;BtnM = new QPushButton(&quot;Прочесть&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;BtnClose = new QPushButton(&quot;Close&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(L1,0,0,1,2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(BtnP,0,2,1,2,Qt::AlignRight);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(Pt,1,0,1,4);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(L2,2,0,1,2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(BtnM,2,2,1,2,Qt::AlignRight);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(Pm,3,0,1,4);</div><div class="code_line">&nbsp;&nbsp; &nbsp;L-&#62;addWidget(BtnClose,4,3,1,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">&nbsp;&nbsp; &nbsp;resize(0,0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(BtnP, &amp;QPushButton::clicked, this, &amp;Dialog::SlotPgSQL);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(BtnM, &amp;QPushButton::clicked, this, &amp;Dialog::SlotMySQL);</div><div class="code_line">&nbsp;&nbsp; &nbsp;connect(BtnClose, &amp;QPushButton::clicked,this, [&amp;](){close();});</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Dialog::SlotPgSQL()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (!DbPgSql.isOpen()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbPgSql = QSqlDatabase::addDatabase(&quot;QPSQL&quot;,&quot;First&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbPgSql.setHostName(&quot;127.0.0.1&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbPgSql.setDatabaseName(&quot;postgres&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbPgSql.setUserName(&quot;postgres&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbPgSql.setPassword(&quot;&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if (!DbPgSql.open()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;QMessageBox::warning(this,&quot;Oops!&quot;,&quot;С базой PostgreSQL пошло штото нетак!&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;Mp = new QSqlQueryModel(this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;QSqlQuery Q(&quot;SELECT * FROM pg_example&quot;,DbPgSql);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Mp-&#62;setQuery(Q);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Pt-&#62;setModel(Mp);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void Dialog::SlotMySQL()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (!DbMySql.isOpen()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbMySql = QSqlDatabase::addDatabase(&quot;QMYSQL&quot;,&quot;Second&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbMySql.setHostName(&quot;127.0.0.1&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbMySql.setDatabaseName(&quot;my_example&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbMySql.setUserName(&quot;root&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DbMySql.setPassword(&quot;root&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if (!DbMySql.open()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;QMessageBox::warning(this,&quot;Oops!&quot;,&quot;С базой MySQL пошло штото нетак!&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;Mm = new QSqlQueryModel(this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;QSqlQuery Q(&quot;SELECT * FROM my_table&quot;,DbMySql);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Mm-&#62;setQuery(Q);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Pm-&#62;setModel(Mm);</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
После сборки запускаем и кликаем на кнопки и видим загрузку данных с разных БД - PostgreSQL и MySQl баз:<br>
<br>
<img class='tag-img' src='https://i120.fastpic.org/big/2022/0826/00/a694a2dc05d0743305b0ffd415ad2e00.png' alt='user posted image'><br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Подбиваем итоги</strong></span><br>
<br>
<ol class="tag-list" type="1"><li>Относительно несложными &quot;движениями&quot; мы создали для себя достаточно хорошую (Linux Manjaro + MXE значительно лучше) среду разработки, базирующуюся на Qt5</li><li>Небольшая ложечка пакастей  :lol: А при статической линковке работа с БД вызывает проблемсы... А вот это для вас - домашнее задание&#33;</li></ol><br>
Надеюсь, что был полезен. Вспоминая меня добрым словом, вы реально прогрузите мою энергию ЦЫ, столь необходимую для моего обмена веществ&#33;<br>
:victory: Peace&#33;&#33;&#33;]]></description>
        <author>Majestio</author>
        <category>C/C++ FAQ</category>
      </item>
	
      </channel>
      </rss>
	