crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
urandom
  опции профиля:
сообщение 6.11.2011, 22:59
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.11.2011
Пользователь №: 2983

Спасибо сказали: 1 раз(а)




Репутация:   0  


приветствую.
такая вот проблемка. создаю виджет. в качестве родителя устанавливаю виджет основной формы.
задаю в стилях фон (#MyWidget { background-color: black; }). но при отображении виджета фон пропадает.
если же виджет создать без родителя, он соответственно станет отдельным окном и все вроде бы нормально.

в чем подвох?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 7.11.2011, 14:01
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


А что значит "фон пропадает"? Будет лучше, если приложите скрин того что получилось. А также изображения того что хочется получить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
urandom
  опции профиля:
сообщение 7.11.2011, 14:26
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.11.2011
Пользователь №: 2983

Спасибо сказали: 1 раз(а)




Репутация:   0  


фон есть:

Form *form = new Form();
form->show();

// в стилях формы задан цвет




фона нет:

Form *form = new Form(this);
form->show();

// в стилях формы задан цвет



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 7.11.2011, 16:01
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


#MyWidget это ID Selector, по идее это значит что стиль будет применяться только к тому к объекту, который имеет имя MyWidget. А у вас имя form.
Вот не знаю, почему у вас работает когда виджет является отдельным окном (имя то все равно другое). У меня работает. Если имя совпадает то показывается, если не совпадает то не показывается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
urandom
  опции профиля:
сообщение 7.11.2011, 16:31
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.11.2011
Пользователь №: 2983

Спасибо сказали: 1 раз(а)




Репутация:   0  


я это понимаю. даже писал QWidget { background-color: black; } - не работает..

в этом случае, кстати, имя объекта не имеет вообще никакого значения.
если я сделаю так:
QWidget *form = new QWidget(this);
form->setStyleSheet("#Form { background-color: black; } ");
form->show();


фон не установится. необходимо будет установить имя объекта таким вот способом:
form->setObjectName("Form");


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

а по поводу разных стилей.. просто проекты разные были. так-то все там правильно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 7.11.2011, 17:03
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Цитата
этом случае, кстати, имя объекта не имеет вообще никакого значения.
если я сделаю так:
QWidget *form = new QWidget(this);
form->setStyleSheet("#Form { background-color: black; } ");
form->show();



фон не установится. необходимо будет установить имя объекта таким вот способом:
form->setObjectName("Form");

А, да, пардон, это уже я тупанул.

Цитата
ну и если у него задан родитель фон пропадает, а если нет - фон появляется волшебным образом х)

Создаю widget с родителем, ставлю ему стиль, фон появился (и без родителя тоже появился). Воистину чудеса (у вас). Единственна разница что я сейчас экспериментирую в винде, а вы похоже в Линуксе с гномом. Ближайший ко мне линукс валяется на виртуалке и без Qt. Если не разрешиться проблема, завтра может проверю на нем. Хотя по идее разницы не должно быть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
urandom
  опции профиля:
сообщение 7.11.2011, 17:15
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.11.2011
Пользователь №: 2983

Спасибо сказали: 1 раз(а)




Репутация:   0  


да, да. у меня ubuntu ..
попробовал создать объект, унаследованный от qwidget.. никакого толку.

вот предыдущий пример

и, если можно, выложите ваш проект. быть может, я туплю..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 7.11.2011, 17:36
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


QWidget w1;
    w1.resize(600, 500);
    w1.show();
QWidget w2(&w1);
    w2.resize(400, 400);
QPushButton push(&w2);
    push.setStyleSheet("background-color: white;");
    push.show();
    w2.setStyleSheet("background-color: black;");
    w2.show();

Код сидит в функции main.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
urandom
  опции профиля:
сообщение 7.11.2011, 18:03
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.11.2011
Пользователь №: 2983

Спасибо сказали: 1 раз(а)




Репутация:   0  


да уж. сплошная мистика. ваш код заработал.
переустановил Qt. теперь работает следующее:
QWidget *w = new QWidget(this);
w->setGeometry(10, 10, 50, 50);
w->setStyleSheet("background-color: black;");
w->show();


но. мне требуется чтобы работал хотя бы наследник класса QWidget..
а он и не работает! ды что ж такое. наверное, еще раз qt переустановлю :D

ищу баг у себя.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
urandom
  опции профиля:
сообщение 13.12.2011, 21:53
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.11.2011
Пользователь №: 2983

Спасибо сказали: 1 раз(а)




Репутация:   0  


Решил проблему так:
setAttribute(Qt::WA_StyledBackground);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.5.2025, 5:32