我是Qt的新手,我每天都在学习新东西.
目前,我正在空闲时间为我的诺基亚N900开发一个小应用程序.
一切都很好,我能够在设备上编译和运行Maemo应用程序.
我刚刚foreach在Qt中了解了这个关键字.(我知道它不是在C++中,所以直到我不小心偶然发现了一个提到它的Qt文档时才考虑它.)
所以,我决定将我那令人烦恼且难以理解的循环改为foreach,但我没有用这个:
QDomNodeList list = doc.lastChild().childNodes().at(1).firstChild().childNodes();
for (int x = 0; x < list.count(); x++)
{
QDomElement node = list.at(x).toElement();
// Do something with node
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试的方式:
foreach (QDomElement node, doc.lastChild().childNodes().at(1).firstChild().childNodes())
{
// Do something with node
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,上面的代码甚至没有编译.我从编译器得到了神秘的错误消息.
有人可以向我解释如何把它弄好吗?
如果foreach循环不支持QDomNodeList,有没有办法处理支持的XML文件foreach?
编辑:
为了澄清,// Do something with node在这种情况下是以下内容:
EveCharacter chr;
chr.setName(node.attribute(EVE_NAME));
chr.setId(node.attribute(EVE_CHARACTER_ID).toInt());
acc->addCharacter(chr);
Run Code Online (Sandbox Code Playgroud)
其中acc是type EveAccount,它将数据存储在a中QList<EveCharacter>.
大写符号是编译时常量字符串.
(我正在为EVE Online API创建一个客户端.这来自接收帐户字符XML并解释它的方法.)
这就是我创建的方式doc:
QDomDocument …Run Code Online (Sandbox Code Playgroud) 我正在使用PyQt并尝试从网络摄像头获取视频以在QT小部件中播放.我已经找到了C和Qt的教程,以及python和gtk的教程,但是对于pyQt和gstreamer的这个组合没什么.有人这个有用吗?
这播放视频很好,但在一个单独的窗口中:
self.gcam = gst.parse_launch('v4l2src device=/dev/video0 ! autovideosink')
self.gcam.set_state(gst.STATE_PLAYING)
Run Code Online (Sandbox Code Playgroud)
我需要的是让叠加层工作,以便它显示在我的GUI上的小部件中.谢谢,互联网大师!
好的,所以我已经走得更远了,但仍然需要一些帮助.我实际上是为Maemo编写的,但以下代码在我的linux笔记本电脑上工作正常:
class Vid:
def __init__(self, windowId):
self.player = gst.Pipeline("player")
self.source = gst.element_factory_make("v4l2src", "vsource")
self.sink = gst.element_factory_make("autovideosink", "outsink")
self.source.set_property("device", "/dev/video0")
self.scaler = gst.element_factory_make("videoscale", "vscale")
self.window_id = None
self.windowId = windowId
self.player.add(self.source, self.scaler, self.sink)
gst.element_link_many(self.source,self.scaler, self.sink)
bus = self.player.get_bus()
bus.add_signal_watch()
bus.enable_sync_message_emission()
bus.connect("message", self.on_message)
bus.connect("sync-message::element", self.on_sync_message)
def on_message(self, bus, message):
t = message.type
if t == gst.MESSAGE_EOS:
self.player.set_state(gst.STATE_NULL)
elif t == gst.MESSAGE_ERROR:
err, debug = message.parse_error()
print "Error: %s" % err, debug
self.player.set_state(gst.STATE_NULL) …Run Code Online (Sandbox Code Playgroud) 我是Qt的新手,我正在使用新的诺基亚Qt SDK测试版,我正在努力在我的空闲时间为我的诺基亚N900开发一个小应用程序.
幸运的是,我能够正确设置所有内容,并在设备上运行我的应用程序.
我在学校学过C++,所以我觉得它不会那么难.
我使用Qt Creator作为我的IDE,因为它不能与Visual Studio一起使用.
我也希望将我的应用程序移植到Symbian,所以我已经运行了几次模拟器,我也编译Windows以调试最邪恶的错误.(调试器在设备上无法正常工作.)
我来自.NET背景,所以有一些我不理解的东西.
当我点击构建按钮时,Qt Creator会在我的项目目录中生成一堆文件:
moc_*.cpp文件 - 我不知道他们的目的.有人能告诉我吗?*.o 文件 - 我认为这些是目标代码*.rss 文件 - 我不知道他们的目的,但他们肯定与RSS没有任何关系Makefile而且Makefile.Debug- 我不知道AppName(没有扩展名) - Maemo的可执行文件,以及AppName.sis- Symbian的可执行文件,我想?AppName.loc - 我不知道AppName_installer.pkg而且AppName_template.pkg- 我不知道qrc_Resources.cpp - 我想这是我的Qt资源(AppName相关申请的名称在哪里)
我注意到这些文件可以安全删除,Qt Creator只是重新生成它们.
问题是它们污染了我的源目录.特别是因为我使用版本控制,如果它们可以重新生成,则将它们上传到SVN是没有意义的.
那么,有人可以告诉我这些文件的确切目的是什么,以及如何让Qt Creator将它们放入另一个目录?
编辑:
似乎我从这个问题的答案中学到了比我想象的更多.:)
非常感谢帮助我的每个人.我给了每个人一个upvote,因为我可以从每个答案中学到新东西.
实际上,Rob推荐的似乎是最方便的解决方案,但我接受了Kotti的回答,因为他为Qt的构建机制如何运作提供了最好的解释.
解决方案:
似乎Maemo和Symbian工具链都没有支持阴影构建,所以我在我的项目文件中使用这些来解决这种情况:
DESTDIR = ./NoSVN
OBJECTS_DIR = ./NoSVN
MOC_DIR = ./NoSVN
RCC_DIR = ./NoSVN
UI_HEADERS_DIR = ./NoSVN
Run Code Online (Sandbox Code Playgroud) 我最近听说过Qt,并了解了开发的乐趣.顺便说一句,我也买了一台诺基亚N900,我听说它的操作系统Maemo 5非常好地支持Qt,所以我想我会试一试.
我是.NET开发人员,所以我更喜欢在Windows上开发,如果有可能的话,使用Visual Studio.我下载了最新的Qt SDK.我启动了Qt Creator并创建了一个简单的"Qt4 Gui应用程序".它工作正常,但是,我找不到任何可以在任何地方编译Maemo 5的选项.
然后,我下载了Visual Studio插件并试图用它创建一个"Qt应用程序",但是,无论我选择哪种Qt项目类型,单击OK按钮后,对话框都会再次弹出,所以它不能创造任何东西
我还阅读了Maemo 5 SDK,但它似乎只适用于Linux.(Windows的每个演练都是从使用Linux设置虚拟机开始的.)但是,我根本不熟悉Linux,所以我宁愿留在Windows上.
所以我的问题是:是否有可能在Windows上开发时创建将在Maemo 5上运行的Qt应用程序,或者这是不可能的?
提前感谢您的任何答案.
编辑(解决方案):
从我开始这个问题开始,这是一个非常好的开发工具,诺基亚Qt SDK很好地解决了这个问题.它是跨平台的,可用于开发Symbian和Maemo应用程序.对于Maemo工具链,它使用MADDE,这正是答案推荐的工具.(请注意,它不再是技术预览.)
我需要学习C++才能学习构建Nokia WRT和/或maemo应用程序.我需要知道我需要/必须学习或关注更多的问题和C++的哪些方面.我想到的一件事是C++没有垃圾收集器.因此,我需要关注变量类型.但是,有没有其他非常重要的我不能忽视它?