2015-04-15 13 views
0

Я разрабатываю мобильное приложение BlackBerry 10 с использованием Momentics IDE (собственный SDK).Как установить цвет метки в C++ с использованием шестнадцатеричного значения?

Все, что я хочу, чтобы задать цвет метки в C++ с шестнадцатеричным значением с помощью TextStyleDefinition класса, как показано ниже:

Label* titleLabel = container->findChild<Label*>("titleLabelObj"); 

TextStyleDefinition* TSD; 
TSD->setColor(Color::fromARGB("#F01E21")); 

titleLabel->textStyle()->setBase(TSD()->style()); 

Проблемы в том, что "FromArgb (интермедиат ARGB) 'фикцию вернуть значение INT поэтому я попытался заменить „#“ на „0x“, но он не работает.

Может ли кто-нибудь помочь мне в этом? Я буду очень благодарен.

+0

возможно дубликат [Как изменить цвет фона контейнера, используя формат Hex?] (Http://stackoverflow.com/questions/22219397/how-to-change-the-background-color- из-a-container-using-the-hex-format) –

+0

да, но он остается без решения .. –

+0

в соответствии с ответом вы должны просто использовать 'Color :: fromARGB (0xFFF01E21)' –

ответ

0

На самом деле это было просто, нужно просто для точной альфы;

// Let's take for example the hex color below : 
QString color = "#F01E21" 

// We need to convert string to int after we replace the "#" with "0x" 
bool ok; 
int stringColorToInt = color.replace("#", "0xFF").toUInt(&ok, 16) // The 'FF' is alpha 

// We set the color 
TSD->setColor(Color::fromARGB(stringColorToInt)); 
1

Color :: FromArgb() ожидает целое число, а не строка ...

Попробуйте это:

#include <cstdlib> 
#include <iostream> 
using namespace std; 

int hexToInt(string s) 
{ 
    char * p; 
    if (s[0]=='#') s.replace(0,1,""); 
    return (int)strtol(s.c_str(), &p, 16); 
} 

затем

m_TSD->setColor(Color::fromARGB(hexToInt("#F01E21"))); 
+0

спасибо, но это не работает !!? –

+0

Он устанавливает неправильный цвет или имеет ошибку компиляции? – DirkMausF

+0

Он работает, когда речь идет о разборе, и возвращаемое значение является int kind вроде 1234567, но когда оно используется в функции fromARGB(), оно ничего не делает, и метка будет невидимой, а в компиляторе ничего не отображается. - J.M.J 27 минут назад –

 Смежные вопросы

  • Нет связанных вопросов^_^