我正在使用图像编辑器,专门使用MouseArea设置当前左或右按钮的相关颜色(在Button类型中).我遇到的问题是我似乎无法过滤特定的按钮.这是给我麻烦的片段:
Button {
x: 60
width: 80
height: 40
text: "Blue"
anchors.verticalCenter: parent.verticalCenter
onButtonClick: {
if(mouseArea.pressedButtons & Qt.RightButton) {
console.log("Right button used");
GlobalState.setRightColorValues(0.0, 0.0, 1.0, 1.0);
} else {
console.log("Left button used");
GlobalState.setLeftColorValues(0.0, 0.0, 1.0, 1.0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
(如果需要,我可以提供整个Button.qml,但它主要来自这里).
我试图按照这里的例子,但用于过滤鼠标右键的方法似乎不起作用(无论如何).假设左键单击的语句为"默认".我也尝试将两者分成不同的if语句,但这样做会导致没有明确过滤按钮.
需要更改什么才能过滤特定的鼠标按钮?或者我是否必须实现Paint/Paint.NET中使用的那种"开关原色"按钮?
编辑1:我意识到Button.qml中缺少相关的片段 -
MouseArea{
id: buttonMouseArea;
acceptedButtons: Qt.AllButtons;
hoverEnabled: true
onEntered: parent.color = onHoverColor
onExited: parent.color = buttonColor
anchors.fill: parent;
onClicked: buttonClick();
}
Run Code Online (Sandbox Code Playgroud)
这嵌套在一个内部Rectangle,它也包含一个Text字段.
问题的要点是我有一个main函数来初始化 SDL,设置 OpenGL 属性(用于上下文创建)获取上下文(一个表示 OpenGL 渲染上下文(带有窗口和上下文)的类),报告OpenGL 版本的一些信息和其他基本信息,并进入在用户关闭窗口或按 ESC 时退出的常规循环。
除了我无法测试任何一个,因为main从未输入过,它似乎SDL_main.h包含一个#define替换main为SDL_main,并且实际main是从静态库中调用的。出于某种原因,它以 0 的返回值退出,而从未进入“实际”主程序。奇怪的是,除了添加 RenderingContext 类之外,从最低限度的工作(只是将一些 OpenGL 数据放入文件中)到现在,我没有对项目设置进行任何更改。从项目中删除该类并不能解决问题,我只是链接了最少量的库来实际完成链接。
是否有解决该问题的方法,或者我不知道 SDL2 可能受我的项目设置影响的某些问题?
代码可以在这里找到,大部分在 src 目录下,main.cpp 在顶层。