Я обнаружил эту фантастическую библиотеку c от @MasterAtul, которая называется Узел gui. Он основан на Qt и написан на C ++ и TypeScript. Поскольку он написан на Qt, он может подчиняться тематике KDE.
Я могу заставить приложение уважать тему, однако я не могу использовать тему значков, предоставляемую KDE в моих приложениях. Класс QIcon в Qt имеет метод QIcon::fromTheme(const QString &name)
, который может это сделать, однако он не является частью Nodegui
. Я пытаюсь добавить это, однако мне не удалось. Реализация функции QIcon.fromTheme
на C ++:
Napi::Value StaticQIconWrapMethods::fromTheme(
const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
std::string iconName = info[0].As<Napi::String>().Utf8Value();
QIcon icon = QIcon::fromTheme(QString::fromStdString(iconName));
auto instance = QIconWrap::constructor.New(
{Napi::External<QIcon>::New(env, new QIcon(icon))});
return instance;
}
При компиляции я не получаю ошибок, однако составленный мной тестовый скрипт не показывает значок:
#!./node_modules/@nodegui/qode/binaries/qode
const nodeGui = require('./dist/index.js');
const window = new nodeGui.QMainWindow();
const btn = new nodeGui.QToolButton(window);
btn.setIcon(nodeGui.QIcon.fromTheme('favorite'));
btn.setText('testBtn');
window.show();
global.win = window;
Есть ли что-нибудь, что я могу сделать, что позволит мне использовать иконки KDE?