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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Read Only  (Прочитано 5102 раз)
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« : Февраль 13, 2015, 20:51 »

Коллеги,
как в таких виджетах, как QCheckBox, QSpinBox, QRadioButton и др., запретить изменение их величин, по аналогии с readOnly в QLineEdit?
Свойство enabled не подходит, т.к. оно изменяет отображение элемента.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Февраль 13, 2015, 20:53 »

унаследуйся да перекрой соответствующие методы
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Февраль 13, 2015, 22:06 »

или сигнал ловить и в обратную ставить
Записан
Bepec
Гость
« Ответ #3 : Февраль 13, 2015, 22:35 »

Ставить eventFilter и плевать свысока на все события Улыбающийся
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #4 : Февраль 14, 2015, 10:43 »

Спасибо! Попробую.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Февраль 14, 2015, 11:27 »

унаследуйся да перекрой соответствующие методы
Они не виртуальны, да и перекрывать многовато

Свойство enabled не подходит, т.к. оно изменяет отображение элемента.
Может все-таки setEnabled(false), а самому похимичить с палитрой/стилем чтобы отображалось как enabled
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Февраль 14, 2015, 11:59 »

Можно попробовать установить для этих виджетов фильтр событий и игнорировать все события от мыши и клавиатуры.
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #7 : Февраль 14, 2015, 15:13 »

С фильтром работает, но у меня виджеты создаются динамически и придется химичить. Оставил на потом, как прототип одобрят.
Про палитру я думал, с ходу не получилось, но у меня нет опыта в этой части. Попробую разобраться.
Спасибо!
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Февраль 15, 2015, 08:55 »

Про палитру я думал, с ходу не получилось,
Вот делал для окна
Код
C++ (Qt)
// make active/inactive palettes same to avoid redraw when focus is changed
void SyncPalette( QWidget * w )
{
       QPalette newPalette, oldPalette = w->palette();
 
int numRoles = (int) QPalette::NColorRoles;
for (int role = 0; role < numRoles; ++role) {
QPalette::ColorRole role1 = (QPalette::ColorRole) role;
if (!newPalette.isBrushSet(QPalette::Active, role1))
newPalette.setBrush(role1, oldPalette.brush(QPalette::Active, role1));
}
 
w->setPalette(newPalette);
}
 
Можно попробовать Disabled вместо Active,
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #9 : Февраль 15, 2015, 20:34 »

Вот делал для окна
Хорошо, пригодится.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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