LINUX.ORG.RU

qt, игнорирование настроек kde

 , , ,


0

1

Пишу приложение с использованием qt. В main.cpp:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    
    QFont AppFont("Ubuntu Condensed", 10, QFont::Normal, false);
    QApplication::setFont(AppFont);
    QApplication::setStyle("fusion");

    MainWindow w;
    w.show();

    return a.exec();
}

При запуске в LXQt приложение запускается с указанным мною стилем (fusion) и шрифтом. При запуске в KDE, KDE меняет стиль и шрифт приложения на стиль шрифт из своих настроек.

Как заставить приложение игнорировать настройки KDE?


Ответ на: комментарий от anonymous

А тем кто жестко прописывает шрифты в аду отдельный котел

Аноним ты наркоман? Поддержка unicode в каждой системе разная. Если в программе нужны unicode символы, и не использовать свой собственный шрифт, то аноним же первый прибежит жаловаться, «почему у меня отображаются квадраты, а у Васи на арче всё работает…»

Если нужны специальные символы, то только собственный шрифт, хоть это веб-страничка, хоть десктоп приложение.

fsb4000 ★★★★★ ()

+1 к выше отписавшимся.

Хардкодить в исходниках различные пользовательские настройки – дурной тон, так делают только в самых запущенных кодовых базах, например, в иксах (захардкоженное среднее колесо мышки).

Мне вот этот Ubuntu Condensed не нравится может быть, а ты предлагаешь его насильно использовать.

EXL ★★★★★ ()
Ответ на: комментарий от fsb4000

Ubuntu Condensed это не тот шрифт, где объят весь Unicode. И это не Icon Font. К тому же современные фреймворки должны быть достаточно умны, чтобы неотображаемые символы в кастомном шрифте сбросить на fallback font.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от fsb4000

Если в программе нужны unicode символы, и не использовать свой собственный шрифт

Вот тут. Почитай что-ли как рисуются символы, которых нет в шрифте у юзера. Тебе достаточно поставлять свой шрифт вместе с прогой, чего не будет хватать само подхватится. Можно отдельным пакетом в зависимостях.

peregrine ★★★★★ ()
Ответ на: комментарий от fsb4000

нужно свой шрифт поставлять

Ты делаешь игру и тебе нужен рендеринг глифов на движке игры? Это - единственное оправдание сценария со «своим шрифтом» в реальном мире.

И свой шрифт в таком сценарии ты «поставляешь» в ассетах игры.

LamerOk ★★★★★ ()
Ответ на: комментарий от fsb4000

Его нужно поставлять. Если у юзера в системе не будет ни одного шрифта с нужным глифом, кроме твоего, то будет выбран твой шрифт. Если у юзера есть его шрифт с нужным глифом, то будет использован его шрифт. Хардкодить шрифт не нужно.

Siborgium ★★★ ()
Последнее исправление: Siborgium (всего исправлений: 1)
    QTimer::singleShot(0, [=]{
        QFont AppFont("Ubuntu Condensed", 18, QFont::Normal, false);
        QApplication::setFont(AppFont);
        QApplication::setStyle("fusion");
    });

так - работает kubuntu 20.04
предположу, что при первой отрисовке какието шрифты и стили от kde всеже прилетают форсированно

x905 ★★★★★ ()
Ответ на: комментарий от EXL

Хардкодить в исходниках различные пользовательские настройки – дурной тон

полагаю, что ТС сделал минимальный пример, а его желание - сделать свою настройку шрифта для своей программы и он не обязан совпадать с системным, например шрифт для кода qtcreator «Fira code» - это же не системный шрифт «Ubuntu»

x905 ★★★★★ ()