0 / 0 / 0
Регистрация: 17.02.2017
Сообщений: 65
1

Смена стилей в процессе работы программы qt setStyleSheet ui

01.03.2020, 00:07. Показов 2780. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу изменить тему оформления (интерфейса) приложения в процессе работы
меняю темку (стиль) следующим образом:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void MainWindow::on_designeGUIApply_clicked( )
{
    QFile styleFile( "styles/" + ui->designeGUILine->text( ) );
    styleFile.open( QFile::ReadOnly );
    QString style( styleFile.readAll( ) );
    setStyleSheet( style );
    QList<QWidget*> list = this->findChildren<QWidget*>( );
 
    foreach( QWidget *w, list )
    {
        w->setStyleSheet( style );
    }
 
    styleFile.close( );
}
тема меняется, но я обеспокоен что это неправильный путь (в моем главном окне создано очень большое количество элементов через qt designer поэтому установка стилей для каждого виджета по отдельности занимает долгое время)
кроме этого у меня есть еще пару вопросов
1) почему если я в конструкторе своего главного окна устанавливаю setStyleSheet( style ), то стиль распространяется на все виджеты этого окна созданные в qt designer'e (при том что строчка setStyleSheet( style ) идет уже после ui->setupUi( this ) ), но уже после запуска программы простого setStyleSheet( style ) недостаточно, приходится менять стиль для каждого виджета отдельно
2) еще я заметил что после смен тем, некоторые темы начинают отображаться по разному, это случается не всегда, после частого смена тем. вот например следующая тема не содержит определения для цвета фона в textedit
CSS
1
2
3
4
5
QTextEdit {
    border-width: 1px;
    border-style: solid;
    border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
(а некоторые темы вообще не имеют никаких корректировок для textedit) и при установке таких тем, я ожидаю что фон textedit'а станет белым (по умолчанию он белый) это и происходит зачастую, но иногда цвет остается с прежней темы оО как этого можно избежать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2020, 00:07
Ответы с готовыми решениями:

Смена стилей программы.
Всем шалом! У меня возник вопрос как можно сделать следующее: Допустимы тыкаю на sRadioButton1 и...

Как в процессе работы программы, обратиться к самому коду программы?
Никогда не сталкивалась с такой задачей, но нужно, очень нужно в процессе работы с программой...

Создание массивов в процессе работы программы
Итак есть папка с парой файлов-массивов. в будущем предполагается произвольное изменение...

Запуск формы в процессе работы программы
Создал проект. Сделал в нём форму. Теперь надо чтобы при выборе команды меню эта форма отображалась...

2
2528 / 1247 / 460
Регистрация: 08.11.2016
Сообщений: 3,428
01.03.2020, 00:56 2
Лучший ответ Сообщение было отмечено lallollulz как решение

Решение

Цитата Сообщение от lallollulz Посмотреть сообщение
поэтому установка стилей для каждого виджета по отдельности занимает долгое время
А если из пушки по воробьям?
C++ (Qt)
1
2
3
4
5
6
7
8
9
void MainWindow::on_designeGUIApply_clicked( )
{
    QFile styleFile( "styles/" + ui->designeGUILine->text( ) );
    styleFile.open( QFile::ReadOnly );
    QString style( styleFile.readAll( ) );
    qApp->setStyleSheet(style);
 
    styleFile.close( );
}
1
0 / 0 / 0
Регистрация: 17.02.2017
Сообщений: 65
01.03.2020, 01:23  [ТС] 3
Annemesski, меня эта мысль посвятила сразу после создания темы) попробовал только сейчас - тема меняется моментально (ну или почти ;p), насчет багов при смене тем пока ничего сказать не могу, они и раньше не всегда проявлялись
сменил самые проблемные ранее темы - 0 багов, еще раз спасибо
0
01.03.2020, 01:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2020, 01:23
Помогаю со студенческими работами здесь

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

Изменение используемого сокета в процессе работы программы
Написала программу #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;WinSock2.h&gt; #include...

Указать тип массива в процессе работы программы
Доброго времени суток, господа! Необходимо создать массив, тип данных которого будет задаваться в...

Создать дополнительный progressbar в процессе работы программы
как можно в процессе работы программы создать дополнительные прогрессбары? количество их зависит от...

Изменение свойств элементов формы в процессе работы программы
есть форма с кнопками(клавиатура) и кнопка, по нажатию которой должно меняться свойство Text....

Изменение надписей в пунктах меню в процессе работы программы
Вопрос такой возможны ли изменения надписей в пунктах меню в процессе работы программы!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru