我需要为项目提供一些模块.
现在,它在QT目录中查找它们(我已将其安装在其中$HOME),但我想在其中进行搜索而不是它/usr/lib/x86_64-linux-gnu/qt5/qml/.
我曾尝试:
一)定义QML_IMPORT_PATH的.bashrc-没有发挥出来
b)复制所需的模块$HOME/Qt5.5.1/Tools/QtCreator/bin/qml/:
在这里我们有不同的东西.如果我打开.qml文件 - 它不会下划线import(这没关系).但是,如果我用控制台运行可执行文件 - 相同的消息module org.bla.bla is not installed.
所以,如果复制没有帮助,也许我不得不让QtCreator(或其他人)在适当的文件夹中搜索模块,但是如何?
UPD.
嗯,你可以定义路径到您的模块,QML2_IMPORT_PATH(不只是QML,但QML2).正如我上面提到的,我复制了模块文件夹,$HOME/Qt5.5.1/Tools/QtCreator/bin/qml/其中完全错误!正确的方法是复制它$QT_HOME/5.5/gcc_64/qml/.它现在运行良好,但我不能说它是如何工作的相同.不幸的是,这与我提出的问题无关.因此,我不会要求其他人回答我的问题,但在发现真正的问题并在此提及之前不会关闭它,所以我可以帮助别人.
我想在我的应用程序中实现拨号器功能.实际上,它完成了,但它的工作方式我不想这样做.按下按钮时,将打开本机拨号程序并等待按下按钮.是否可以直接拨打而无需双击?这是我的代码:
Button {
id: callButton
anchors.centerIn: parent
text: 'Make a call'
onClicked: Qt.openUrlExternally('tel:+77051085322')
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用CML公开C++对象setProperty();.这是我的代码的原型:
MyClass.h
class MyClass::public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = 0);
~MyClass();
private:
QScreen *screen;
QPixmap myPixmap;
};
Run Code Online (Sandbox Code Playgroud)
MyClass.cpp
MyClass::MyClass (QObject *parent) : QObject(parent)
{
screen = QGuiApplication::primaryScreen();
}
MyClass::~MyClass()
{
}
void MyClass::captureIt()
{
myPixmap = screen->grabWindow(0);
myPixmap.save("/home/john/Pictures/screen.png");
}
Run Code Online (Sandbox Code Playgroud)
在main.cpp中的用法
QQmlApplicationEngine engine;
MyClass mc;
engine.rootContext()->setProperty("myclass", &mc);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
Run Code Online (Sandbox Code Playgroud)
在main.qml中的用法
onClicked: mc.captureIt()
Run Code Online (Sandbox Code Playgroud)
当我尝试编译错误的时候发生了,因为有QVariant一个奇怪的错误(问题标题中提到的那个).
你有什么想法我怎么解决这个问题?
更新
它与以下评论中发布的ringo不重复.问题不在于我无法将我的班级转换为QVariant.我可以.但问题是,这setProperty()并不让我去做.我必须把我那个简单的物体放在那里.
当我执行时make,它会执行类似的操作gcc blah.o -lXtst -lX11并导致类似的错误undefined reference to XTestFakeButtonEvent.我发现了很多答案,所有人都说这是因为错误的链接顺序.使用普通时很容易改变顺序gcc,但是怎么样make?
我是Open-Source的初学者,想知道是否有任何添加文件的指南.gitignore?