h我从昨天开始就陷入困境。我已经从 Surface pro 4 中删除了 Qt 并重新安装了它,因为它似乎无法找到 QtQuick 控件和其他与 qml 相关的模块。执行安装程序后,我尝试打开 qt creator 并收到此消息
此应用程序无法启动,因为无法初始化 Qt 平台插件。重新安装应用程序可能会解决此问题。可用的平台插件有:direct2d、minimal、offscreen、windows
你能帮助我吗?我明天必须让这该死的平板电脑工作,我真的不知道如何解决这个问题......
编辑
我通过从头开始重新安装 Qt 然后使用标准 python 发行版而不是 Anaconda 解决了这个问题。现在每个使用 QtQuick 的应用程序都按预期工作。
我想发送字典,其中包含动态创建 qml 对象所需的数据,从 PySide2 类发送到 QML 接口,并且由于我需要响应某些事件来执行此操作,因此我需要使用信号和槽。
由于我刚刚开始使用 QML 和 python,我尝试创建一个简单的项目只是为了玩玩(正如您从代码中看到的)
质量管理语言:
import QtQuick 2.10
import QtQuick.Controls 2.2
import QtQuick.Window 2.2
import QtQuick.Controls.Material 2.3
import QtQuick.Layouts 1.0
ApplicationWindow {
id: mainWindow
width:640
height: 480
title: qsTr("Simple ui")
visible: true
locale:locale
Rectangle {
id: appWindow
objectName: "splasso"
anchors.fill: parent
color: "yellow"
Material.accent: Material.DeepPurple
Material.primary: Material.Cyan
Component.onCompleted: function(){
TestVar.theSignal.connect(catchAnswer);
testList.append(stuff1);
testList.append(stuff2);
testList.append(stuff3);
testCombo.currentIndex = 0;
//Just a pointless test print
console.log(JSON.stringify(stuff1));
}
function catchAnswer(answer){
console.log(JSON.stringify(answer));
}
ComboBox{
id: testCombo
anchors.centerIn: parent
width: …Run Code Online (Sandbox Code Playgroud) 我刚刚开始为即将到来的项目使用 PySide2 和 QML,我立即偶然发现了一个问题:如何将 python 类(继承自 QObject)发出的信号连接到 .qml 文件中的插槽?例如:我有一个 QThread(python 类),每 50 毫秒生成几个 xy 坐标。我想将生成的对添加到 QML 文件中定义的 LineSeries,以生成类似示波器的绘图。
这个问题可能真的很基本而且很愚蠢,但我真的需要一些帮助。
此致
兰多
编辑4:
我找到了解决方案,但我不太喜欢它。你能建议我(如果存在的话)一种更优雅的方法吗?
Python 代码:
class Manager(QObject):
dataReady = Signal(float,float)
def __init__(self):
QObject.__init__(self)
self._currX = 0
self._currY = 0
self._delay = 0.5
self._multiplier = 1.0
self._power = 1.0
self._xIncrement = 1.0
self._starter = False
self._threader = None
@Property(bool)
def starter(self):
return self._starter
@starter.setter
def setStarter(self, val):
print("New val: {0}, oldVal: {1}".format(val,self._starter))
if self._starter == val:
return
self._starter = val
if …Run Code Online (Sandbox Code Playgroud) 我对整个 CMake 逻辑和语法很陌生。对于我正在处理的代码,我需要使用该cap_set_proc函数来处理进程功能标志 ( man link )。所以我决定从你在这里看到的一段非常愚蠢的代码开始:
#include<iostream>
#include<string>
#include<sys/capability.h>
using namespace std;
int main(){
cap_t test = cap_get_proc();
string whatsTest(cap_to_text(test,nullptr));
cout<<whatsTest<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(目前,我不在乎我写的代码是否有意义......)
现在,如果我只是使用c++(如下所示)一切都可以正常编译并且可执行文件运行没有任何问题:
c++ test_main.cpp -o test_cap -lcap
Run Code Online (Sandbox Code Playgroud)
问题是我正在工作的项目非常庞大,并且非常依赖 CMake。所以我想编译相同的代码,但使用 CMake... 我如何编写一个 CMakeLists.txt 文件,让我获得与前几行中显示的编译器指令相同的结果?