當用戶更改我的TabView中的當前選項卡時。我想將activeFocus設置爲當前選項卡中的頂層項目,例如使用forceActiveFocus。然而,出於某種奇怪的原因,即使Button設置了「focus:false」,TabView也會將activeFocus設置爲它在Tab中找到的第一個Button。 如下面的輸出所示。當我使用forceActiveFocus將焦點設置爲頂層Item時。首先Item獲得焦點,然後立即失去焦點,而Button獲得焦點。如果選項卡中沒有按鈕,則按預期工作。我需要關於解決這個問題的建議。我想知道這是一個錯誤還是我在這裏做錯了什麼?在QML TabView中將項目設置爲activeFocus時遇到問題
下面是用戶點擊第二個標籤時的程序輸出。
qml: Item Focus gained: Tab2
qml: Button focus gained: Tab2
qml: Item Focus lost: Tab2
代碼舉例如下(Qt中5.4.2測試):
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
ApplicationWindow {
width: 640
height: 480
visible: true
TabView {
id: tabView
onCurrentIndexChanged: {
getTab(currentIndex).forceActiveFocus();
}
}
Component.onCompleted: {
var tab1 = tabView.addTab("tab1", tabComp);
tab1.active = true;
tab1.item.objectName = "Tab1";
var tab2 = tabView.addTab("tab2", tabComp);
tab2.active = true;
tab2.item.objectName = "Tab2";
}
Component {
id: tabComp
Item {
focus: true
onActiveFocusChanged: {
if(activeFocus)
console.log("Item Focus gained: " + objectName);
else
console.log("Item Focus lost: " + objectName);
}
Button {
focus: false
onActiveFocusChanged: {
if(activeFocus)
console.log("Button focus gained: " + parent.objectName);
else
console.log("Button focus lost: " + parent.objectName);
}
}
}
}
}