如何在屏幕底部显示TextField
How to display TextField at the bottom of the screen
我想在 SailfishOS 的 QML 屏幕底部显示一个 TextField
。
我尝试了多次,但 TextField
始终位于屏幕顶部。
import QtQuick 2.0
import Sailfish.Silica 1.0
ApplicationWindow {
id: screen
anchors.fill: parent
Item {
width: parent.width;
anchors.bottom: screen.bottom
TextField {
width: parent.width;
anchors.bottom: screen.bottom
id: input
placeholderText: "URL"
inputMethodHints: Qt.ImhNoPredictiveText
validator: RegExpValidator { regExp: /^[a-zA-Z]{3,}$/ }
}
}
}
试试这个:
ApplicationWindow {
id: screen
width: 400
height: 300
TextField {
width: screen.width
y: screen.height - height
placeholderText: "URL"
}
}
Kaymaz,一般来说,你的问题与SailfishOS无关。你几乎是对的,但在你的代码中犯了几个错误。您可以使用此代码:
// Its desktop version, and everyone can run it. It will be easy
// to insert correct includes for SailfishOS
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
ApplicationWindow {
id: appWindow
// Explicitly set window size (just for testing on desktop)
width: 200
height: 400
// Item that represents "main application rectangle"
// it will contain all child items
Item {
id: root
anchors.fill: parent
TextField {
id: input
anchors {
left: parent.left
right: parent.right
bottom: root.bottom
}
placeholderText: "URL"
inputMethodHints: Qt.ImhNoPredictiveText
validator: RegExpValidator { regExp: /^[a-zA-Z]{3,}$/ }
}
}
}
我不推荐使用 folibis 的方法,原因如下:
- 如果您可以在 QML 中使用
anchor
s -- 使用它。
- 避免未命名常量(如
30
)。
- 这样的代码变得难以阅读(我的意思是,如果它超过 20 行)。
- 想象一下,你的
TextField
的身高发生了变化——你需要改变 y: screen.height - 30
。所以这种代码变得难以维护。
- 不要写代码思维"I can improve this later"。写出好的代码。
我想在 SailfishOS 的 QML 屏幕底部显示一个 TextField
。
我尝试了多次,但 TextField
始终位于屏幕顶部。
import QtQuick 2.0
import Sailfish.Silica 1.0
ApplicationWindow {
id: screen
anchors.fill: parent
Item {
width: parent.width;
anchors.bottom: screen.bottom
TextField {
width: parent.width;
anchors.bottom: screen.bottom
id: input
placeholderText: "URL"
inputMethodHints: Qt.ImhNoPredictiveText
validator: RegExpValidator { regExp: /^[a-zA-Z]{3,}$/ }
}
}
}
试试这个:
ApplicationWindow {
id: screen
width: 400
height: 300
TextField {
width: screen.width
y: screen.height - height
placeholderText: "URL"
}
}
Kaymaz,一般来说,你的问题与SailfishOS无关。你几乎是对的,但在你的代码中犯了几个错误。您可以使用此代码:
// Its desktop version, and everyone can run it. It will be easy
// to insert correct includes for SailfishOS
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
ApplicationWindow {
id: appWindow
// Explicitly set window size (just for testing on desktop)
width: 200
height: 400
// Item that represents "main application rectangle"
// it will contain all child items
Item {
id: root
anchors.fill: parent
TextField {
id: input
anchors {
left: parent.left
right: parent.right
bottom: root.bottom
}
placeholderText: "URL"
inputMethodHints: Qt.ImhNoPredictiveText
validator: RegExpValidator { regExp: /^[a-zA-Z]{3,}$/ }
}
}
}
我不推荐使用 folibis 的方法,原因如下:
- 如果您可以在 QML 中使用
anchor
s -- 使用它。 - 避免未命名常量(如
30
)。 - 这样的代码变得难以阅读(我的意思是,如果它超过 20 行)。
- 想象一下,你的
TextField
的身高发生了变化——你需要改变y: screen.height - 30
。所以这种代码变得难以维护。 - 不要写代码思维"I can improve this later"。写出好的代码。