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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отображение символа "&" на некоторых компонентах QtQuick.Controls.  (Прочитано 6604 раз)
ksk-
Самовар
**
Offline Offline

Сообщений: 178



Просмотр профиля
« : Август 09, 2015, 15:12 »

Всем привет! На некоторых компонентах из QtQuick.Controls (в частности "Button" и "MenuItem") некорректно отображается текст, содержащий символы "&". Очень не хотелось бы только из-за этого делать стили для таких компонентов. Я надеялся использовать системный.

Видимо, это баг? Или так и задумано? Может быть, есть какое-нибудь быстрое и простое решение?

Ниже код и картинка:
Код
Javascript
import QtQuick 2.5
import QtQuick.Controls 1.4
 
Rectangle {
   width: 200;
   height: 200;
 
   Column {
       anchors.fill: parent;
       anchors.margins: 2;
 
       spacing: 2;
 
       Label {
           text: "Black & White";
       }
 
       Button {
           text: "Black & White";
 
           menu: Menu {
               MenuItem { text: "Black & White" }
           }
       }
   }
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 10, 2015, 08:57 »

& в QAction используется для определения вызова по Alt + буква. Погугли, как ее сэкранировать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ksk-
Самовар
**
Offline Offline

Сообщений: 178



Просмотр профиля
« Ответ #2 : Август 10, 2015, 09:22 »

& в QAction используется для определения вызова по Alt + буква. Погугли, как ее сэкранировать.

Да, точно! Теперь всё ясно. И как я сразу не догнал? )))) Спасибо. )
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 10, 2015, 09:30 »

Как найдешь решение, сюда закинь. А то я подзабыл, как его экранировать. Да и мало ли, кто еще искать будет.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BuRn
Гость
« Ответ #4 : Август 10, 2015, 10:01 »

Кодом символа не прокатит ?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Август 10, 2015, 10:03 »

Покатит, но что-то проще было. Возможно, "&&"
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ksk-
Самовар
**
Offline Offline

Сообщений: 178



Просмотр профиля
« Ответ #6 : Август 10, 2015, 21:39 »

Покатит, но что-то проще было. Возможно, "&&"
Действительно! Это то, что нужно. Обрабатываю текст для отображения на таких контролах с помощью функции:
Код
Javascript
function menuItemText(text) {
   return text.replace(new RegExp("&", 'g'), "&&");
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Август 10, 2015, 21:49 »

А зачем тут регексп? Это как из пушки по воробьям. Просто пробегись по строке и сделай замену. Хотя, для qml это не очень критично. )))
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ksk-
Самовар
**
Offline Offline

Сообщений: 178



Просмотр профиля
« Ответ #8 : Август 10, 2015, 21:55 »

А зачем тут регексп? Это как из пушки по воробьям. Просто пробегись по строке и сделай замену. Хотя, для qml это не очень критично. )))
Это самый наглядный рабочий способ. )
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Август 10, 2015, 21:58 »

Ну, про самый и наглядный я бы поспорил. Если не лень будет завтра, попробую покрутить.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Август 11, 2015, 10:25 »

А почему не просто:
Код
function menuItemText(text) {
   return text.replace("&", "&&");
}
 

Непонимающий
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ksk-
Самовар
**
Offline Offline

Сообщений: 178



Просмотр профиля
« Ответ #11 : Август 11, 2015, 10:56 »

Просто replace заменит только первую найденную подстроку.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Август 11, 2015, 11:03 »

Да, точно, 2 вхождения я и не проверил. Тогда твой вариант действительно самый наглядный.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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