Как выполнить определенную версию QT с Notepadqq

У меня есть две версии Ubuntu, работающей на другом VMs под рабочей станцией VMware: 16.04 и 18.04.

Мне действительно не нравится файл, открываются/сохраняют интерфейс, который я имею на 18,05, и мне нравится тот, который я имею на 16,04. Я предполагаю, что проблемой являются различные версии спокойного выполнения.

На 16,04 я, кажется, выполняю Notepadqq v.1.4.2 и QT 5.5.1

На 18,04 я, кажется, выполняю Notepadqq v.1.4.2 и QT 5.9.5

Таким образом, та же версия Notepadqq, но различные версии QT.

Когда я делаю a

whereis qt

в обоих VMs я "ничего" не получаю назад. Все, что я вижу,

qt:

Мое предположение корректно? Причина другого файла, открываются/сохраняют GUI из-за различия в спокойных версиях, или действительно ли вот в чем разница в ОС (16,04 v 18.04) версии?

Если вот в чем разница в спокойных версиях, как я иду от спокойной версии 5.9.5 назад к 5.5.1 в моих 18.04 VM?

0
задан 24 July 2018 в 06:06

2 ответа

Вторая опция.

Единственным путем я могу думать, чтобы гарантировать, что это работает, поскольку Вы требуете, должен изменить исходный код и создать notepadqq сами. Это вызвано тем, что, QT решает, используется ли собственное диалоговое окно, если разработчик не переопределяет это поведение (который не имеет место здесь).

Эти шаги будут вести Вас посредством этого процесса.

Удалите снимок notepadqq

sudo snap remove notepadqq

Предпосылки установки

sudo apt install git build-essential
sudo apt install qt5-default qttools5-dev-tools qtwebengine5-dev libqt5websockets5-dev libqt5svg5 libqt5svg5-dev

Загрузите notepadqq источник

cd ~/Downloads
git clone --recursive https://github.com/notepadqq/notepadqq.git

Создайте файл исправления

Я записал файл исправления, чтобы помочь сделать необходимые модификации. Этот файл исправления вызовет использование несобственного диалогового окна.

Откройте новый файл в текстовом редакторе, скопируйте следующее и затем вставьте его в текстовый редактор. Сохраните документ как notepadqq.patch в ~/Downloads. Удостоверьтесь, что Вы копируете весь файл точно.

--- mainwindow.cpp  2018-07-29 13:42:51.758184000 +0100
+++ mainwindow_patched.cpp  2018-07-29 13:53:06.888952000 +0100
@@ -845,7 +845,7 @@
                                 tr("Open"),
                                 defaultUrl,
                                 tr("All files (*)"),
-                                0, 0);
+                                0, QFileDialog::DontUseNativeDialog);

     if (fileNames.empty())
         return;
@@ -866,7 +866,7 @@
     BackupServicePauser bsp; bsp.pause();

     // Select directory
-    QString folder = QFileDialog::getExistingDirectory(this, tr("Open Folder"), defaultUrl.toLocalFile(), 0);
+    QString folder = QFileDialog::getExistingDirectory(this, tr("Open Folder"), defaultUrl.toLocalFile(), QFileDialog::DontUseNativeDialog);
     if (folder.isEmpty())
         return;

@@ -1052,7 +1052,7 @@
                            tr("Save as"),
                            getSaveDialogDefaultFileName(tabWidget, tab).toLocalFile(),
                            tr("Any file (*)"),
-                           nullptr, nullptr);
+                           nullptr, QFileDialog::DontUseNativeDialog);

     if (filename != "") {
         m_settings.General.setLastSelectedDir(QFileInfo(filename).absolutePath());
@@ -2463,7 +2463,7 @@
     // See https://github.com/notepadqq/notepadqq/issues/654
     BackupServicePauser bsp; bsp.pause();

-    QString file = QFileDialog::getOpenFileName(this, tr("Extension"), QString(), "Notepadqq extensions (*.nqqext)");
+    QString file = QFileDialog::getOpenFileName(this, tr("Extension"), QString(), "Notepadqq extensions (*.nqqext)", nullptr, QFileDialog::DontUseNativeDialog);
     if (!file.isNull()) {
         Extensions::InstallExtension *installExt = new Extensions::InstallExtension(file, this);
         installExt->exec();
@@ -2547,7 +2547,7 @@
                            tr("Open Session..."),
                            recentFolder,
                            tr("Session file (*.xml);;Any file (*)"),
-                           0, 0);
+                           0, QFileDialog::DontUseNativeDialog);

     if (filePath.isEmpty())
         return;
@@ -2574,6 +2574,7 @@
     dialog.setFileMode(QFileDialog::AnyFile);
     dialog.setDefaultSuffix("xml");
     dialog.setAcceptMode(QFileDialog::AcceptSave);
+    dialog.setOption(QFileDialog::DontUseNativeDialog);

     if (!dialog.exec())
         return;

Примените файл исправления

cd ~/Downloads
patch ~/Downloads/notepadqq/src/ui/mainwindow.cpp notepadqq.patch

Сборка и установка notepadqq

cd ~/Downloads/notepadqq
./configure --prefix /usr
make
sudo make install

Сделать команду nqq работой (дополнительно)

sudo ln -s /usr/bin/notepadqq /usr/bin/nqq

Запуск notepadqq. Теперь, Вы должны иметь то, что Вы имели прежде, но открываться/сохранять диалоговое окно должно быть несобственным.

Я действительно замечал, что значок для notepadqq не появляется. Если я узнаю, как зафиксировать это, я обновлю ответ.

Надежда, которая помогает.

Обновление для значка

Похоже, что кэш значка должен быть обновлен следующим образом.

sudo gtk-update-icon-cache /usr/share/icons/hicolor/

Значок отображен правильно, после того как эта команда была выполнена.

0
ответ дан 28 October 2019 в 07:14

Я не на 100% уверен, почему, но это похоже на приложение, GUI ведет себя по-другому, установлено с помощью PPA по сравнению с тем, когда это установлено как снимок. Я видел это с другим приложением.

При выполнении следующих шагов необходимо закончить с notepadqq, использование несобственного компонента открывается/сохраняет диалоговое окно в Ubuntu 18.04.

Удалите текущий notepadqq

sudo apt remove notepadqq

Очистите систему путем удаления PPA

sudo add-apt-repository -r ppa:notepadqq-team/notepadqq
sudo apt update

Установите notepadqq как снимок

sudo snap install notepadqq

Запустите notepadqq и проверьте открываться/сохранять диалоговое окно. В моей системе появляется несобственное диалоговое окно.

0
ответ дан 28 October 2019 в 07:14

Другие вопросы по тегам:

Похожие вопросы: