2016-10-10 55 views
2

我有以下的設計如何使用提升的小部件設置Tab鍵順序?

QWidget 
    QFrame promoted to FooComponent 
    QLineEdit a (internal tab order 1) 
    QLineEdit b (tab order 2) 
    QLineEdit c (tab order 1) 

Qt Creator中(設計師)我不能設置爲FooComponent Tab鍵順序。所以當我激活QWidget時,我看到光標在c,但我希望它在a

如何處理級聯組件的Tab鍵順序?

回答

2

你可以用setFocuProxy來做到這一點。在FooComponent中,將焦點代理設置爲第一個子項窗口小部件的內部製表順序。

然後在Qt Designer中,將升級的QFramefocusPolicy更改爲TabFocus,然後重新設置製表順序,使其在順序中位於正確的位置。

+0

非常好的提示。它的工作原理,由於某些原因,只有最初的重點不在第一個領域。我嘗試過'setFocus',但它不起作用。但Tab鍵順序本身起作用,只是它不以「field 1」開頭。 –

+0

@HorstWalter。我在你的問題中創建了一個使用設計的例子,它對我來說都很好。你確定你已經在'FooComponent'中設置了tab-order,並且是將焦點代理設置爲「field 1」?如果您的真實設計更復雜,請發佈ui文件。 – ekhumoro