2015-04-15 63 views
0

我正在開發使用Momentics IDE(原生SDK)的BlackBerry 10移動應用程序。如何使用十六進制值在C++中設置標籤顏色?

我要的是使用TextStyleDefinition類如下面以設置在C++標記顏色與十六進制值:

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

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

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

的問題是,'fromARGB(INT ARGB)'機能的研究收回的INT價值,所以我試圖用‘0X’取代‘’,但它不工作。

任何人都可以幫助我嗎?我會非常感謝。

+0

可能重複的[如何更改使用十六進制格式的容器的背景顏色?](http://stackoverflow.com/questions/22219397/how-to-change-the-background-color-使用十六進制格式的容器) –

+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

顏色:: 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類型,如1234567,但在fromARGB()函數中使用時,它什麼都不做,標籤將不可見,並且在編譯器中不顯示任何內容。 - J.M.J 27分鐘前 –

相關問題