小编wog*_*ggy的帖子

C#泛型方法选择

我正在尝试用 C# 编写通用算法,可以处理不同维度的几何实体。

在下面的人为示例中,我有Point2Point3,它们都实现了一个简单的IPoint接口。

现在我有一个GenericAlgorithm调用函数的函数GetDim。根据类型,此函数有多种定义。还有一个为任何实现IPoint.

我最初预计以下程序的输出是 2, 3。然而,它是 0, 0。

interface IPoint {
    public int NumDims { get; } 
}

public struct Point2 : IPoint {
    public int NumDims => 2;
}

public struct Point3 : IPoint {
    public int NumDims => 3;
}

class Program
{
    static int GetDim<T>(T point) where T: IPoint => 0;
    static int GetDim(Point2 point) => point.NumDims;
    static int GetDim(Point3 point) => point.NumDims; …
Run Code Online (Sandbox Code Playgroud)

c# generics

9
推荐指数
2
解决办法
330
查看次数

如何在鼠标区域重叠的 QML TableView 中正确处理鼠标事件?

我有一个附加到我的代表TableViewColumn,其中包含一个MouseArea. 我使用MouseArea来检测对表格中单个单元格的双击,这使我可以显示 以TextField进行编辑。

问题是委托MouseArea阻止鼠标事件传播到TableView. 这意味着 的选择行为TableView不再有效。具体来说,我已经SelectionMode.ExtendedSelection启用。

MouseArea子项很简单,原来是这样的:

MouseArea{
    id: mousearea
    anchors.fill: parent
    onDoubleClicked: {
        showTextField()
    }
}
Run Code Online (Sandbox Code Playgroud)

查阅文档后,看起来应该可以:

MouseArea{
    id: mousearea
    anchors.fill: parent
    propagateComposedEvents: true        // new
    onDoubleClicked: {
        showTextField()
    }
    onPressed: mouse.accepted = false    // new
}
Run Code Online (Sandbox Code Playgroud)

它确实如此,除了现在我无法再接收双击事件(在 中MouseArea)!这是有道理的,正如文档后面所述:

按下(鼠标事件鼠标)

处理此信号时,使用鼠标参数的接受属性来控制此 MouseArea 是否处理按下和所有未来鼠标事件直到释放。默认是接受该事件并且不允许该事件之下的其他 MouseAreas 处理该事件。如果accepted 设置为false,则在下一次按下按钮之前不会向此MouseArea 发送更多事件。

似乎没有一种方法可以在TableView级别上捕获单个单元格的鼠标事件。这是我第一天玩 QML,所以我可能在这里错过了一些明显的东西,但我有什么选择?注意我使用的是 PyQt。

qt pyqt mouseevent qml

6
推荐指数
1
解决办法
1984
查看次数

标签 统计

c# ×1

generics ×1

mouseevent ×1

pyqt ×1

qml ×1

qt ×1