我在Qt中实现了一个小部件,如下所示:
class MyWidget : public QWidget
{
Q_OBJECT
Q_PROPERTY( bool BooVal READ getBoolVal WRITE setBoolVal)
Q_PROPERTY( MyPointer* PointerData READ getPointer WRITE setPointer);
...
}
Run Code Online (Sandbox Code Playgroud)
我想在QtDesinger中使用它.因此我实现了QDesignerCustomWidgetInterface接口,如下所示:
class MyPlugin : public QObject, public QDesignerCustomWidgetInterface
{
...
}
QWidget *MyPlugin::createWidget( QWidget *parent )
{
return new MyWidget(parent);
}
Run Code Online (Sandbox Code Playgroud)
但是在QtDesigner属性窗口中,我无法像Q_PROPERTY(MyPointer*PointerData ...)那样设置复杂数据.像QTreeWidget这样的Qt小部件可以通过自定义界面在QtDesigner中设置复杂的指针数据.例如,当我设置父节点及其子节点时,在QTreeWidget中,如下所示,出现在.ui文件中
<widget class="QTreeWidget" name="treeWidget">
<item>
<property name="text">
<string>1</string>
</property>
<item>
<property name="text">
<string>1-1</string>
</property>
</item>
</item>
</widget>
Run Code Online (Sandbox Code Playgroud)
实际上我想创建一个像QTreeWidget这样的插件,并通过QtDesinger设置像QTreeWidgetItem*这样的复杂数据.
我有一个有2个字段的表
x y
---- ----
1 null
2 5
3 5
4 null
5 null
6 10
7 5
Run Code Online (Sandbox Code Playgroud)
我的SQLite查询是
select y,count(y)
from mytable
group by y
Run Code Online (Sandbox Code Playgroud)
结果是
null 0
5 3
10 1
Run Code Online (Sandbox Code Playgroud)
预计会看到null 3.
但输出为null 0.
这是什么意思?
有一些像这样的HTML代码:
<ul>
<li id='root' class='tree-node'>
root
<ul>
<li class='tree-node' id='node1'>node1</li>
<li class='tree-node' id='node2'>node2</li>
<li class='tree-node' id='node3'>node3</li>
<li class='tree-node' id='node4'>node4
<ul>
<li class='tree-node' id='node4-1' >node4-1</li>
<li class='tree-node' id='node4-2' >node4-2</li>
</ul>
</li>
</ul>
</li>
<ul>
Run Code Online (Sandbox Code Playgroud)
我想将click事件绑定到具有树节点类的每个标记
并将click事件绑定到文档
这是我的代码:
$(".tree-node").click(function(e){
console.log($(this).attr("id"));
});
$(document).click(function(e){
console.log("document clicked!");
});
Run Code Online (Sandbox Code Playgroud)
stopPropagation()是否有任何替代方法可以阻止事件从node4-2冒泡到其父节点?