我正在做一些事情,我有一个名为“FloatingMenu”的类(它应该在 C++ 中管理菜单)及其在文件 FloatingMenu.qml 中用于 GUI 的 QML alter-ego。 我有一个文件 main.qml,其中有几个矩形和一个 FloatingMenu,它按预期显示。 现在,如果我执行 qmlRegisterType("EasyGraph", 1,0, "FloatingMenu");在我的 main.cpp 中,FloatingMenu 的图形部分消失了。
这是我的代码:
int main(int argc, char* argv[]){
QGuiApplication app(argc, argv);
//Register all the needed types in QML.
qmlRegisterType<FloatingMenu>("EasyGraph", 1,0, "FloatingMenu");
//The only window known as QDeCView in QML.
QQuickView* view = new QQuickView();
view->setMinimumHeight(100);
view->setMinimumWidth(100);
view->setResizeMode(QQuickView::SizeRootObjectToView);
//Context, to set properties from c++ to QML
//QQmlContext* cxt = view->rootContext();
//Load the base.
view->setSource(QUrl::fromLocalFile("../qml/MainWindow.qml"));
view->show();
//FloatingMenu* menu = view->rootObject()->findChild<FloatingMenu*>("mainMenu"); //When registered, this works
return app.exec();
}
和:
#ifndef _FLOATINGMENU_H_
#define _FLOATINGMENU_H_
#include <QQuickItem>
#include "GraphicalNode.hpp"
class FloatingMenu : public QQuickItem {
Q_OBJECT
Q_PROPERTY(GraphicalNode* target READ target WRITE setTarget NOTIFY onTargetNodeChanged)
private:
GraphicalNode* _target;
public:
FloatingMenu(QQuickItem* p = NULL);
GraphicalNode* target() const;
void setTarget(GraphicalNode* n);
signals:
void onTargetNodeChanged(GraphicalNode*);
};
#endif
#include "FloatingMenu.hpp"
FloatingMenu::FloatingMenu(QQuickItem* p) : QQuickItem(p), _target(NULL){
setFlag(QQuickItem::ItemHasContents, false); //I tried true and false here. what should it be? It has content, but I don't want to draw it from the C++ side.
}
GraphicalNode* FloatingMenu::target() const {
return _target;
}
void FloatingMenu::setTarget(GraphicalNode* n) {
_target = n;
}
我的主窗口.qml:
import EasyGraph 1.0
import QtQuick 2.0
Rectangle {
width: 400; height: 400
color: "#333333"
Flickable {
id: flickable
anchors.fill: parent
width: 400; height: 400
FloatingMenu{
objectName: "mainMenu"
id: menu
}
}
}
最后,FloatingMenu.qml:
import EasyGraph 1.0
import QtQuick 2.0
Rectangle {
width: 30; height: 30
color: "red"
}
我不知道我做错了什么,我不明白它为什么不起作用。 我唯一想做的就是将一个 QML 对象与一个类绑定(bind),并让 QML 成为绘图部分……我想我缺少了一个小选项或可以使它工作的东西。
提前致谢!
最佳答案
当您导入模块 EasyGraph 时,您隐藏了文件 FloatingMenu.qml。将其更改为 SomeFloatingMenu.qml 并使用您的 FloatingMenu 项目:
import EasyGraph 1.0
import QtQuick 2.0
FloatingMenu {
Rectangle { width: 30; height: 30 color: "red" }
}
现在使用您的 SomeFloatingMenu,它是您在 qml 组件中创建的 c++ 类:
import QtQuick 2.0
Rectangle {
width: 400; height: 400; color: "#333333"
Flickable {
id: flickable; anchors.fill: parent; width: 400; height: 400;
SomeFloatingMenu { objectName: "mainMenu"; id: menu }
}
}
关于c++ - Qt/QML - 在 C++ 中注册 QML 类型会使 QML 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23168475/
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题: