[英]Qml QColor Type Error
我試圖通過將QColor從C ++傳遞到QML來設置自定義QQuickPaintedItem的QColor屬性。 我嘗試了以下方法:
QML代碼:
m_DisplayScreens[m_DisplayScreens.length].backgroundColor = m_Model.getBackgroundColor(i_Timer);
m_DisplayScreens是我的自定義QML小部件的列表。 我可以通過做類似的事情來設置backgroundColor屬性。
DisplayScreen
{
backgroundColor: "Red"
}
“ m_Model”對象只是一個QObject,它是QML形式的“后端”。 getBackgroundColor的代碼如下:
Q_INVOKABLE QString getBackgroundColor(int index);
QString CountDownPanelModel::getSegmentColor(int index)
{
return "#003300";
}
具體的錯誤是:xxx.js:19:TypeError:類型錯誤
任何幫助,將不勝感激。 我已經為此努力了幾個小時。
謝謝,
傑克
第一次編輯:
好的,這是我返回QColor時的嘗試。
class CountDownPanelModel : public QObject
{
Q_OBJECT
public:
explicit CountDownPanelModel(QObject *parent = 0);
~CountDownPanelModel() = default;
Q_INVOKABLE QColor getBackgroundColor(int index);
Q_INVOKABLE QColor getSegmentColor(int index);
};
QColor CountDownPanelModel::getBackgroundColor(int index)
{
return QColor(44, 44, 44);
//return m_TimerList->at(index)->getTimerData()->getBackgroundColor();
}
QColor CountDownPanelModel::getSegmentColor(int index)
{
return QColor(200, 200, 200);
//return m_TimerList->at(index)->getTimerData()->getSegmentColor();
}
使用QColor的結果與使用QString的結果相同。 在分配顏色的行上出現“類型錯誤”。 例如:
var m_DisplayScreens = [];
function createDisplays()
{
m_DisplayScreens = [];
var timerCount = m_Model.getTimerCount();
var bg = m_Model.getBackgroundColor(0);
var fg = m_Model.getSegmentColor(0)
for (var i_Timer = 0;
i_Timer < timerCount;
++i_Timer)
{
var component = Qt.createComponent("DynamicSevenSegmentDisplay.qml");
var display = component.createObject(m_Panel);
display.initialize(m_Model.getSevenSegmentDisplayInitializer())
display.y = 100 * (i_Timer);
m_DisplayScreens[m_DisplayScreens.length] = display;
m_DisplayScreens[m_DisplayScreens.length].backgroundColor = m_Model.getBackgroundColor(i_Timer);
m_DisplayScreens[m_DisplayScreens.length].segmentColor = m_Model.getSegmentColor(i_Timer)
}
m_Panel.height = 100 * timerCount;
}
為了完整起見,這里是DynamicSevenSegmentDisplay.qml
SevenSegmentDisplayScreen
{
y: 0
height: 100
width: parent.width - x
backgroundColor: "Black"
borderPercentage: 10
displayCount: 20
text: "1234567890"
anchors.left: m_SettingsButton.right
anchors.leftMargin: 8
}
我對為什么不能將QColor分配給backgroundColor感到完全困惑。 調試器在“值”列中什么也不顯示。 我認為這是'null'的JS版本。
這不是一個明確的答案,但我發現了幾個問題。 我以前使用Linux Mint進行開發。 我最近改用Ubuntu,發現在C ++和QML之間傳遞數據存在一些問題。 我收到一條有關CRC錯過比賽的消息。
“在“ /usr/lib/x86_64-linux-gnu/dri/i915_dri.so”中找到的調試信息與“ /usr/lib/x86_64-linux-gnu/dri/i965_dri.so”不匹配(CRC不匹配)。 ”
因此,這也可能是問題的一部分。 但在大多數情況下,它看起來像是我的開發機器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.