我有几个关于 Qt 的问题。
我已经知道 Qt 和 OpenGL 可以一起使用。目前我们在我的大学使用 GLUT(用于窗口和输入管理)。我看到 Qt 能够做同样的事情。使用 Qt 而不是 GLUT 有什么缺点吗? (性能明智)
我也知道 Qt 可用于构建游戏内 GUI。我什至看到了这个 3d GUI 示例WolfenQt。所以这是可能的。但是,如果您关心性能,将 Qt 用于游戏内 GUI 是否有意义?
我创建了一个游戏,其中如果用户按下按钮,它将沿特定方向移动蛇。
而是当您按下按钮时,我要这样做,以便当手指悬停在按钮上时,蛇会移动。
所以我将方法从更改setOnTouchListener为setOnHoverListener
这是我的代码:
Button btnRight = (Button) findViewById(R.id.btnRight);
btnRight.setOnHoverListener(new OnHoverListener(){
public boolean onHover(View v, MotionEvent event) {
if(direction!=4)
direction = 6;
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
当手指在屏幕上按下并在按钮上拖动时,什么也没有发生。
当手指在按钮上拖动时,如何注册它?有没有简单的方法解决方案,还是我必须检测坐标等?
三星Galaxy S4具有“ 浮动触摸 ”功能,即使不触摸屏幕也可以检测到手指。
btn1当手指经过时,我想在按钮()上触发一个事件。
我尝试使用OnHoverListener,但是onHover在需要的事件MotionEventis MotionEvent.ACTION_HOVER_ENTER或MotionEvent.ACTION_HOVER_EXITor 时从未被调用MotionEvent.ACTION_HOVER_MOVE。
这是我的代码:
btn1.setOnHoverListener(new OnHoverListener() {
@Override
public boolean onHover(View v, MotionEvent event) {
Log.d("FloatingTouch", "onHover: "+event.getAction());
switch (event.getAction()) {
case MotionEvent.ACTION_HOVER_ENTER:
Log.d("FloatingTouch", "ACTION_HOVER_ENTER" );
return true;
case MotionEvent.ACTION_HOVER_MOVE:
Log.d("FloatingTouch", "ACTION_HOVER_MOVE" );
return true;
case MotionEvent.ACTION_HOVER_EXIT:
Log.d("FloatingTouch", "ACTION_HOVER_EXIT" );
break;
default:
break;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
我想念什么吗?也许需要许可?
我有关于QML 2(Qt 5.2.1)的项目。看起来不错。
但是,当我在1-2秒后关闭Qt Creator的“应用程序输出”(底部的东西)中正在运行的项目(ALT+ F4或其他)时,我得到以下消息:
The program has unexpectedly finished.
bla-bla-bla.exe crashed
Run Code Online (Sandbox Code Playgroud)
这在发行和调试模式下发生。我在调试下启动,但是没有任何错误。从我的最后一个析构函数开始,循序渐进,直到return app.exec();返回1。
我的意思是除此之外-我看不到任何错误。我应该为此担心吗?我可以知道此消息的原因吗?有没有办法获取更具体的消息?
我尝试从启动应用程序cmd,但未收到任何错误。我的main.cpp:
#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include "painter.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<Painter>("MyCanvas", 1, 0, "MyCanvas");
QtQuick2ApplicationViewer viewer;
viewer.setMainQmlFile(QStringLiteral("qml/test_painteditem/main.qml"));
viewer.showExpanded();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
Main.qml:
import QtQuick 2.0
import MyCanvas 1.0
Rectangle {
width: 360
height: 360
color: "white";
focus: true;
Keys.onLeftPressed: {
mc.frame--;
mc.update();
}
Keys.onRightPressed: {
mc.frame++;
mc.update();
}
Keys.onPressed: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在webRTC中更改本地视频分辨率。我使用以下方法创建本地视频跟踪器:
-(RTCVideoTrack *)createLocalVideoTrack {
RTCVideoTrack *localVideoTrack = nil;
RTCMediaConstraints *mediaConstraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints:nil optionalConstraints:nil];
RTCAVFoundationVideoSource *source =
[self.factory avFoundationVideoSourceWithConstraints:mediaConstraints];
localVideoTrack =
[self.factory videoTrackWithSource:source
trackId:@"ARDAMSv0"];
return localVideoTrack;
}
Run Code Online (Sandbox Code Playgroud)
我将强制性约束设置如下,但是它不起作用:
@{@"minFrameRate":@"20",@"maxFrameRate":@"30",@"maxWidth":@"320",@"minWidth":@"240",@"maxHeight":@"320",@"minHeight":@"240"};
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
"Un-installer"是否有任何Qt安装程序框架的脚本或示例?我想使用维护工具删除一些文件夹.
使用Qt Visual Studio集成,添加一个新的Qt类会添加两个单独的moc.exe生成的文件 - 一个用于调试,一个用于发布(一个用于当前存在的任何其他配置).然而,这两个最终生成的文件似乎是相同的.
另一方面,在添加UI类时,uic.exe生成的文件没有这种分离,并且对于所有配置都是相同的文件.
有没有人知道为什么每个配置都需要一个单独的moc文件?两者之间何时有差异?
我在Visual Studio 2008中使用Qt 4.4.2.
当我编写代码时,IntelliSense似乎死了 - 它没有显示Qt对象中的任何方法或数据成员,如QPushButton,没有看到QObject :: connect静态方法等.
这是典型情况还是在安装库时我做错了什么?
我一直在使用QT一段时间,我一直在想关于在Windows中绘制GUI的方式.
是真的使用QPainter自行绘制所有按钮,编辑框,组合框,复选框,选项卡等,还是以某种方式使用本机窗口小部件?
它可以做自定义样式和蒙皮的事实表明它确实使用QPainter绘制了所有内容,但是如何才能维护这种代码?Qt开发人员是否真的对窗口系统的整个功能进行了逆向工程?这有点浪费吗?
另一个证据是,如果我在Qt gui上使用Spy ++,那么所有窗口都会显示一个等于"QWidget"的类名.如果它使用原生小部件不应该是"按钮","静态"等?
在其他平台上怎么样?它在Max OSX中也是这样做的吗?