我试图通过将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" object只是一个QObject,后面是'后端' QML表格。 getBackgroundColor的代码如下:
Q_INVOKABLE QString getBackgroundColor(int index);
QString CountDownPanelModel::getSegmentColor(int index)
{
return "#003300";
}
具体错误是:xxx.js:19:TypeError:输入错误
任何帮助将不胜感激。我现在已经对这个问题敲了几个小时。
谢谢,
JEC
第一次编辑:
好的伙计,这是我在返回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相同。我得到了#34; Type Error"在线我分配颜色。例如:
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。调试器只显示&#39;值&#39;柱。我认为这是&#39; null&#39;。
的JS版本答案 0 :(得分:0)
这不是一个明确的答案,但我发现了几个问题。我以前使用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不匹配)。“
所以这也可能是问题的一部分。但在大多数情况下,它看起来就像是我的开发机器。