我在代码KeyNavigation.tab
属性中使用了使导航在qml中可行的方法。
但是控件SpinBox
不能使用它。例如,如果我在它和要它导航的元素之间有一个控件,它将不遵守规则。
我将用一个真实的例子来说明。
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
和
main.qml
import QtQuick 2.9
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
ApplicationWindow {
id: window
title: "Stack"
visible: true
height: 200
width: 400
Item {
id: page
anchors.fill: parent
width:parent.width
height: parent.height
ScrollView {
id:scrollView
anchors.fill:parent
Column{
width:parent.width
spacing:10
TextField {
id:textField
KeyNavigation.tab: spinBox1
implicitHeight: 30
font.bold: true
}
SpinBox {
id: spinBox1
KeyNavigation.tab: spinBox2
width: 100
height: 30
editable: true
}
ComboBox {
id:comboBox
//KeyNavigation.tab: spinBox2
anchors.topMargin: 10
textRole: "text"
}
SpinBox {
id: spinBox2
KeyNavigation.tab: textField
width: 100
height: 30
editable: true
}
}
}
}
}
如果使用制表符,spinBox1
不会跳到spinBox2
。
这已在Windows 10操作系统上进行了测试
使用的Qt版本是5.11.1
答案 0 :(得分:0)
由于某些原因,如果附加属性是在SpinBox本身而不是在TextInput上设置的,则不会调用QQuickKeyNavigationAttached :: keyPressed()。因此,在contentItem上使用附加属性是一种解决方法:
SpinBox {
Component.onCompleted: contentItem.KeyNavigation.tab = spinBox
}