Как запустить определенную версию Qt с Notepadqq
У меня есть две версии Ubuntu, работающие на разных виртуальных машинах под рабочей станцией VMWare: 16.04 и 18.04.
Мне очень не нравится интерфейс открытия / сохранения файлов, который у меня есть на 18.05, и мне нравится тот, который у меня есть на 16.04. Я предполагаю, что проблема заключается в разных версиях Qt.
16 апреля у меня, кажется, работает Notepadqq v.1.4.2 и Qt 5.5.1
Кажется, 18.04 я запускаю Notepadqq v.1.4.2 и Qt 5.9.5
То есть та же версия Notepadqq, но разные версии Qt.
Когда я делаю
whereis qt
в обеих виртуальных машинах я ничего не получаю обратно. Все что я вижу
qt:
Правильно ли мое предположение? Является ли причиной различного графического интерфейса открытия / сохранения файлов различие в версиях qt или различие в версиях ОС (16.04 против 18.04)?
Если есть разница в версиях Qt, как мне перейти с версии 5.9.5 Qt на 5.5.1 в моей виртуальной машине 18.04?
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/
Значок отображается правильно после выполнения этой команды.
Я не уверен на 100%, почему, но похоже, что графический интерфейс приложения ведет себя по-разному при установке с использованием 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 и проверьте диалог открытия / сохранения. В моей системе появляется не родной диалог.