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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как заблокировать QAction  (Прочитано 3241 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« : Сентябрь 11, 2020, 11:18 »

Добрый день
Как заблокировать QAction на тулбаре, чтобы он был нажат и не отжимался?
Чтоб он не отжимался сделал ему свойство setCheckable(true);
Если его задизейблить, то он поменяет вид на серый. Мне нужно чтобы вид был как у активного, но чтобы нельзя было его отжать и чтобы он не слал сигналы.
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #1 : Сентябрь 11, 2020, 11:23 »

Можно картинку вместо него поставить, раз уж так хочется. Улыбающийся По смыслу, если элемент есть и он active, то он сигналы слать по-любому будет.
Ну, либо просто сделать свой элемент на базе QAction и именно в нём всё и отрабатывать. И состояние "нажатости" и "чтобы не слал сигналы".
Записан

juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #2 : Сентябрь 11, 2020, 11:44 »

смысыл такой, чтобы элемент был неактивный и видимый.

Например в Photon Application Builder (GUI для QNX) если виджет заблокировать, то он вид не изменит. Чтобы он был зетенён, нужно ещё ставить свойство *::ghost. Т.е. для обычного Disable нужно два свойства ставить, что-то типа
PtWidget->setProperty( Disabled | Ghost);
в Qt это просто QWidget->setEnabled(false);

В Photon можно просто указать PtWidget->setProperty( Disabled ) - виджет заблокируется, но вид у него будет как у активного.
Как это сделать в Qt? У QPushBytton есть setStyle(...).... можно в стайлах покапаться. У экшена нет стайла.  Как QAction сделать видимым и заблокированным?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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