- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 QT QML 中创建了一个项目,其中包含一个 MouseArea 元素。
这是代码,
import QtQuick 1.0
Rectangle {
id: base
width: 240
height: 320
x:0; y:0
color: "#323138"
/////////////////////// MAIN FOCUSSCOPE //////////////////////
FocusScope {
id: mainfocus
height: base.height; width: base.width
focus: true
/////////////////////// MAIN GRID ///////////////////////////
GridView {
id: maingrid
width: base.width-10; height: base.height-titlebar.height-10
x: 5; y: titlebar.height+5;
cellHeight: maingrid.height/3; cellWidth: maingrid.width/3-1
Component {
id: myicon
Rectangle {
id: wrapper
height: maingrid.cellHeight-10; width: maingrid.cellWidth-10
radius: 8; smooth: true
color: GridView.isCurrentItem ? "#c0d0c0" : "transparent"
focus: true
MouseArea {
id: clickable
anchors.fill: wrapper
hoverEnabled: true
//onClicked: func()
}
Image {
id: iconpic
source: "./ui6.svg"
anchors.centerIn: wrapper
}
Text {
id: iconname
color: wrapper.GridView.isCurrentItem ? "black" : "#c8dbc8"
anchors.top: iconpic.bottom; anchors.horizontalCenter: iconpic.horizontalCenter
text: name
}
}
}
model: 4
delegate: myicon
focus: true
}
}
//////////////////////// TITLEBAR ///////////////////////
Rectangle {
id: titlebar
x:base.x
y:base.y
height: 25; width: base.width
color : "#356f47"
Text {
color: "#fdfdfd"
anchors.centerIn: titlebar
text: "title"
}
}
}
我想制作此类项目的网格,以便它为我提供我创建的自定义可点击项目的网格,我可以将其用于不同的功能。
使用 GridView 元素,我能够制作这样一个网格,它使用我定制的项目数量作为模板。
问题是,当我单击这些项目中的任何一个时,它会执行一个函数,因为我的项目中只有一个 MouseArea 元素。我能够检测到对项目的点击,但无法唯一确定点击了哪个项目。我如何实现这一目标?
当然,我可能做错了,所以也欢迎其他建议。谢谢
最佳答案
当 GridView 项创建实例时,它们会继承索引变量。这标识了唯一的项目。
MouseArea {
id: clickable
anchors.fill: wrapper
hoverEnabled: true
onClicked: {
maingrid.currentIndex=index;
switch (index)
{
case 0:
//Function or method to call when clicked on first item
break;
case 1:
//Function or method to call when clicked on second item
break;
default:
//Function or method to call when clicked on another item
break;
}
}
}
希望对你有帮助!
关于c++ - Qt QML 中 MouseArea 的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512851/
我查看了类似的线程,但没有太大帮助。 我正在使用 QtQuick.Controls.Button在 QML将鼠标悬停在按钮上时,我无法更改光标形状!我想在不使用 MouseArea 的情况下实现这一点
以下代码生成一个白色矩形,其中包含一个红色矩形和一个灰色矩形。每个矩形都有一个关联的 MouseArea。当在其中单击鼠标时,灰色矩形变为蓝色。红色矩形在鼠标光标进入其中时打印一条控制台消息,在发出释
我正在使用 MouseArea 实现手势捕捉器(向左/向右滑动)。它应该在具有垂直 flickableDirection 的 Flickable 内工作。此外,它应该以视觉堆栈顺序将鼠标事件传播到它下
如果我放一个 MouseArea在 QML 元素上,然后 MouseArea将窃取所有鼠标事件。 因此,TextEdit将是不可编辑和不可选择的。 TextEdit { // some pro
是否可以传播 MouseArea的 positionChanged 事件到基础事件? 我试图设置 mouse.accepted至 false对于最顶层 MouseArea 的任何现有信号处理程序以及设
内部MouseArea首先获取鼠标事件。我想“看到”这些事件,以便设置各种属性,但不影响它们。我希望鼠标事件传播到任何父 MouseArea。 考虑这段代码。我想单击蓝色方 block 来查看“蓝色按
有一个 QQuickPaintedItem 带有重载的鼠标事件处理程序: void Plotter::mousePressEvent(QMouseEvent *event) { qDebug(
如何从鼠标区域获取鼠标的绝对位置?我需要让它显示正确位置的弹出窗口 Item { Menu { id: menu MenuItem {
我想在 QML 中实现以下场景。 这是 ListView 的示例/简化委托(delegate)元素: Component { Item { id: container
我有一个在 QML 中声明的 ChartView 项,我需要类似橡皮筋的缩放功能。这可以通过半透明矩形和 MouseArea 项目来实现。问题是对于一个矩形,它只能选择从左上角到右下角的区域,因为带有
我有一个在 QML 中声明的 ChartView 项,我需要类似橡皮筋的缩放功能。这可以通过半透明矩形和 MouseArea 项目来实现。问题是对于一个矩形,它只能选择从左上角到右下角的区域,因为带有
我有以下代码: ListView { delegate: MyDelegate { MouseArea { anchors.fill: parent
在 Android 上测试应用程序时,我注意到发生了一些奇怪的事情。双击事件处理程序已触发,但该特定项目没有发生任何双击。 试图隔离这个问题,我发现几乎每一个点击链都像双击一样快速,不管两个对象会导致
我遇到了问题,如何在 qml 中检测通过 MouseArea 的滑动? 此代码,来自文档: Rectangle { id: container width: 600; heig
我在 QT QML 中创建了一个项目,其中包含一个 MouseArea 元素。 这是代码, import QtQuick 1.0 Rectangle { id: base width: 240 hei
我正在使用 qt quick controls 2 SplitView,似乎 SplitView 项内的任何 MouseArea 都将鼠标事件从SplitView 句柄。这意味着当 handle 位于
摘要:如何在不硬编码尺寸的情况下将图标粘贴在文本旁边,并将它们都包装在 MouseArea 中......以一种可行的方式在 GridLayout 内? 我创建了一个 QML 布局,其中在可点击的“按
import QtQuick 2.2 import QtQuick.Window 2.1 import QtQuick.Controls 1.1 ApplicationWindow { fla
我正在尝试将 MouseArea 鼠标事件与 C++ 连接,但是 QQuickMouseArea 是私有(private)的,所以我无法获取信号。 像这样: QObject::connect(mous
有一个 TextArea,我已将 activeFocusOnPress 属性设置为 false 以阻止虚拟键盘弹出,但是当用户单击 TextArea 时,光标位置应该移动。为了实现这一目标,我认为 m
我是一名优秀的程序员,十分优秀!