这可以按预期使用Row,但不能使用RowLayout.为什么?两者有什么区别?
ApplicationWindow {
title: "Testing"
width: 640
height: 480
//RowLayout {
Row {
anchors.fill: parent
Rectangle {
id: rect1
width: parent.width * 0.3
height: parent.height
color: "blue"
}
Rectangle {
height: parent.height
width: parent.width * 0.7
color: "red"
}
}
}
Run Code Online (Sandbox Code Playgroud) 我和我的朋友正在研究由Raspberry PI B +和一个小触摸屏驱动的便携式互联网收音机.我正在使用Qt-5.9开发接口,我已经为PI的ARMv6 CPU交叉编译了.我的界面正在使用QML,所以当我启动我的应用程序时,每一个工作但QML动画都是滞后的.因此控制台告诉我QML JIT没有启用(JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform.),所以我在给定的页面上查找了关于V4引擎的信息,经过大约两周的试用,我发现问题是缺少使用Thumb的可能性-1指令集,V4需要,以及在Pi上运行的Raspbian Jessie的HardFP配置.所以现在我认为如果我让交叉编译器使用Thumb-1集合它会工作.我尝试了很多,最后我遇到了两个问题.
-mthumb在命令行中使用该标志时,我收到此错误:sorry, unimplemented: Thumb-1 hard-float VFP ABI.我需要Thumb-1,我无法更改整个操作系统的Hard-Float实现,并且ARMv6没有合适的编译器标志来禁用VFP.-mthumb-interwork在命令行中使用该标志时,编译工作,但由于ABI设置,可执行文件不会更改(https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/ARM-Options .html #ARM-Options)(-mthumb-interwork: ... In AAPCS (the ABI) configurations this option is meaningless.).我尝试了所有可能的ABI但没有一个工作并编译正在运行的程序.我也读过关于RPi的一些补丁,但很久以前它们被包含在上游Qt中.
我稍微修改了编译器参数(文件:QT/qtbase/mkspecs/devices/linux-rasp-pi-g ++/qmake.conf):
QMAKE_CFLAGS += \
-mthumb \
-mfpu=vfp \
-mtune=arm1176jzf-s \
-march=armv6zk \
-mabi=aapcs-linux
Run Code Online (Sandbox Code Playgroud)
(此配置不起作用)
我使用以下参数配置QT:
./configure -release -opengl …Run Code Online (Sandbox Code Playgroud) 如果我放置一个MouseAreaQML元素,那么MouseArea将窃取所有鼠标事件.因此,TextEdit将是不可编辑和不可选择的.
TextEdit {
// some properties
MouseArea {
// some properties
OnClicked: { /* do something */ }
}
}
Run Code Online (Sandbox Code Playgroud)
有办法解决吗?
顺便说一句,如果我把一个大的MouseArea放在另一个上MouseArea,更大的MouseArea将窃取所有鼠标事件.我该如何解决?我认为手动传递鼠标事件可以解决这个问题,但是怎么做呢?
我正在使用QML,我想动态地向SplitView添加元素,例如.onMouseClick,但到目前为止我没有找到答案.
到目前为止我发现的是SplitView它的默认属性设置为它的第一个孩子的data属性.所以我想我应该尝试添加新动态创建的组件,并将父组设置为该child(splitView1.children[0]).不幸的是,这也不起作用.在组件加载完成后,第一个子节点的子节点数为零(看起来像SplitLayout的Component.onCompleted事件调用一个将这些子节点移动到其他地方的函数).因此,添加的子项不会呈现(并且不响应任何布局附加属性).
请参阅以下代码段:
import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Layouts 1.0
ApplicationWindow {
width: 600
height: 400
SplitView {
anchors.fill: parent
Rectangle {
id: column
width: 200
Layout.minimumWidth: 100
Layout.maximumWidth: 300
color: "lightsteelblue"
}
SplitView {
id: splitView1
orientation: Qt.Vertical
Layout.fillWidth: true
Rectangle {
id: row1
height: 200
color: "lightblue"
Layout.minimumHeight: 1
}
// Rectangle { //I want to add Rectangle to splitView1 like this one, but dynamicly eg.onMouseClick
// color: "blue"
// …Run Code Online (Sandbox Code Playgroud) 我正在编写一个概念验证应用程序,这非常简单.基本上它由一个UI组成,其中"Note"类型对象列表显示在QML ListView中.
然后,我有几个类,这是类似的东西:
#ifndef NOTE_H
#define NOTE_H
#include <string>
using namespace std;
class Note
{
public:
Note(QObject* parent = 0)
: QObject(parent)
{
}
Note(const int id, const string& text)
: _id(id), _text(text)
{
}
int id()
{
return _id;
}
const string text()
{
return _text;
}
void setText(string newText)
{
_text = newText;
}
private:
int _id;
string _text;
};
#endif // NOTE_H
Run Code Online (Sandbox Code Playgroud)
然后一个存储库:
class NoteRepository : public Repository<Note>
{
public:
NoteRepository();
~NoteRepository();
virtual shared_ptr<Note> getOne(const int id); …Run Code Online (Sandbox Code Playgroud) 我试图实现拖动和使用新的QML类型的Qt 5.3下降Drag,DragEvent和DropArea.这是QML Drag类型文档中的原始示例,并进行了一些小的修改:
import QtQuick 2.2
Item {
width: 800; height: 600
DropArea {
width: 100; height: 100; anchors.centerIn: parent
Rectangle {
anchors.fill: parent
color: parent.containsDrag ? "red" : "green"
}
onEntered: print("entered");
onExited: print("exited");
onDropped: print("dropped");
}
Rectangle {
x: 15; y: 15; width: 30; height: 30; color: "blue"
Drag.active: dragArea.drag.active
// Drag.dragType: Drag.Automatic
Drag.onDragStarted: print("drag started");
Drag.onDragFinished: print("drag finished");
MouseArea {
id: dragArea
anchors.fill: parent
drag.target: parent …Run Code Online (Sandbox Code Playgroud) 为了测试QML部署,我创建了一个非常简单的QML应用程序.这是代码:
main.cpp中
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QFile>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QQmlApplicationEngine engine;
QString path = app.applicationDirPath() + "/qml/main.qml";
if(QFile::exists(path))
engine.load(path);
else {
return 1;
}
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
main.qml
import QtQuick 2.2
import QtQuick.Controls 1.2
ApplicationWindow {
id: mainWindow
title: "Test window"
width: 800
height: 600
visible: true
}
Run Code Online (Sandbox Code Playgroud)
为了确保系统中没有安装任何开发库,我设置了一个纯Windows XP安装的虚拟机.然后,我按照此处所述的说明将所有 Qt5*.dll 复制到程序目录中,以及platforms/qwindows.dll和icu*52.dll.Dependency Walker确认没有遗留任何破坏的依赖关系,即一切都应该已经正确设置.
但是,由于某些原因,当我运行我的应用程序时,我什么也看不见.既不是窗口,也不是错误消息.从控制台运行也没有错误.尽管如此,我可以看到我的应用程序在任务管理器中运行,就像它在后台运行一样.在开发机器上运行应用程序没有问题:应用程序正确启动,我可以看到它的窗口.
我究竟做错了什么?如何部署QML应用程序以确保它可以在任何其他 - 非开发 - 机器上运行?
在Quick Controls 2.0应用程序中使用TableView是否可以?这将需要两个导入:
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
Run Code Online (Sandbox Code Playgroud)
我会得到任何副作用吗?
另一个相关的问题:似乎TableView属于Quick Controls 1.0集.是吗?是否意味着如果可以使用TableView,那么可以使用Quick Controls 2.0应用程序中的所有Quick Controls 1.0控件吗?
我正在开发具有视频聊天功能的移动应用.我为webrtc找到了一个不错的javascript库,它似乎加载得很好,QWebView但我需要授予它访问摄像头和麦克风的权限,我无法弄清楚如何做到这一点.可能吗?QWebEngineView有一个方便的信号和插槽,但它不支持移动.
所描述的清单权限不工作在这里.
相应的Qt bug:无法通过QML WebView访问摄像头和麦克风
有任何想法吗?
qml ×10
qt ×9
qtquick2 ×4
qt-quick ×2
qt5 ×2
android ×1
c++ ×1
deployment ×1
jit ×1
mvvm ×1
qquickitem ×1
qwebview ×1
raspberry-pi ×1
webrtc ×1
wpf ×1