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
()
Ответ на: комментарий от anonymous

Приложения должны следовать настройкам юзера.

Подпишусь под каждым словом.

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

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

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

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

fsb4000 ★★★★★
()

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

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

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

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

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

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

Напиши проверку, какой у юзера DE. Если не LXQT, то приложение выдает ошибку и завершает выполнение.

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

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

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

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

Лучше написать проверку того, какой у юзера шрифт используется. Если не Ubuntu Condensed, 10pt, то приложение выдает ошибку и завершает выполнение.

Siborgium ★★★★★
()

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

На кол.

LamerOk ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.