Russian Qt Forum
Ноябрь 22, 2024, 13:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как добавить pressed к QFrame?  (Прочитано 14706 раз)
Syveren
Гость
« Ответ #15 : Октябрь 09, 2012, 14:28 »

На просторах интернета нашёл вот что:
Цитировать
If the value of the Qt property changes after the style sheet has been set, you will probably have to force a style sheet recomputation. This can be done by calling
style()->unpolish(theWidget);
style()->polish(theWidget);
Alternatively, you can unset the style sheet and set it again, but this is more expensive than the first solution.
Взято отсюда: http://qt-project.org/faq/answer/how_can_my_stylesheet_account_for_custom_properties
Интересно почему: probably
Записан
Syveren
Гость
« Ответ #16 : Октябрь 09, 2012, 16:21 »

 Мистика Непонимающий Еще днём по совету выше добавлял в преопределенный виджет  Q_PROPERTY  
и всё работало (При нажатии виджет становился красным). Сейчас запустил тот же самый код и уже ничего не работает.
Код
C++ (Qt)
class MyFrame:public QFrame
{
Q_OBJECT
public:
   Q_PROPERTY(bool headerPressed READ getHeaderPressed WRITE setHeaderPressed NOTIFY headerPressedChanged)
 
   MyFrame(QWidget *parent = 0):QFrame(parent){
       setProperty("headerPressed",false);
       setStyleSheet(
                      "MyFrame{"
                      "background-color: blue;}"
                       "MyFrame[headerPressed=true]{"
                      "background-color: red;}");
   }
 
   bool is_pressed;
   bool getHeaderPressed() const{return is_pressed;}
   void setHeaderPressed(bool pressed){ is_pressed=pressed;}
 
   void mouseReleaseEvent(QMouseEvent *){
       setProperty("headerPressed",false);
       emit headerPressedChanged(false);
   }
   void mousePressEvent(QMouseEvent *)
   {
       setProperty("headerPressed",true);
       emit headerPressedChanged(true);
   }
signals:
   void headerPressedChanged(bool);
};
« Последнее редактирование: Октябрь 09, 2012, 16:25 от Syveren » Записан
Bepec
Гость
« Ответ #17 : Октябрь 09, 2012, 17:46 »

Ну как бэ можешь перечитать мою сообщеньку в конце 1 страницы, но у тебя все шансы разобраться самому Улыбающийся
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 21.