Использование Qt в NodeJS + KDE theme не может найти значок - PullRequest
0 голосов
/ 10 апреля 2020

Я обнаружил эту фантастическую библиотеку 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?

...