qtdeclarative/tests/manual/text/textInputPropertiesAndSigna...

467 lines
14 KiB
QML

// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
Item {
width: 600; height: 840
GridLayout {
columns: 3; rowSpacing: 6; columnSpacing: 6
anchors { left: parent.left; right: parent.right; top: parent.top; margins: 12 }
// ====================================================
CheckBox {
id: enabledCB
text: "enabled"
checked: true
Layout.fillWidth: false
}
// ====================================================
Rule {
Layout.columnSpan: 3
Layout.fillWidth: true
text: "TextInput"
}
// ----------------------------------------------------
CheckBox {
id: textInputMouseSelCB
text: "mouse select"
onCheckedChanged: textInput.selectByMouse = checked
Layout.fillWidth: false
}
Rectangle {
Layout.fillWidth: true
implicitHeight: textInput.implicitHeight + 8
radius: 4; antialiasing: true
border.color: "black"; color: "transparent"
TextInput {
id: textInput
anchors.fill: parent; anchors.margins: 4
enabled: enabledCB.checked
Component.onCompleted: textInputMouseSelCB.checked = selectByMouse
onTextEdited: textInputTextEditedInd.blip()
onTextChanged: textInputTextChangedInd.blip()
onPreeditTextChanged: textInputPreeditInd.blip()
onDisplayTextChanged: textInputDisplayTextInd.blip()
onSelectedTextChanged: textInputSelectedTextChangedInd.blip()
}
}
SignalIndicator {
id: textInputTextEditedInd
label: "textEdited"
}
// ----------------------------------------------------
Text { text: "text" }
Text { text: textInput.text; Layout.fillWidth: true }
SignalIndicator {
id: textInputTextChangedInd
label: "textChanged"
}
// ----------------------------------------------------
Text { text: "preeditText" }
Text { text: textInput.preeditText; Layout.fillWidth: true }
SignalIndicator {
id: textInputPreeditInd
label: "preeditTextChanged"
}
// ----------------------------------------------------
Text { text: "displayText" }
Text { text: textInput.displayText; Layout.fillWidth: true }
SignalIndicator {
id: textInputDisplayTextInd
label: "displayTextChanged"
}
// ----------------------------------------------------
Text { text: "selectedText" }
Text { text: textInput.selectedText; Layout.fillWidth: true }
SignalIndicator {
id: textInputSelectedTextChangedInd
label: "selectedTextChanged"
}
// ====================================================
Rule {
Layout.columnSpan: 3
Layout.fillWidth: true
text: "TextField"
}
// ----------------------------------------------------
CheckBox {
id: textFieldMouseSelCB
text: "mouse select"
onCheckedChanged: textField.selectByMouse = checked
Layout.fillWidth: false
}
TextField {
id: textField
enabled: enabledCB.checked
Layout.fillWidth: true
Component.onCompleted: textFieldMouseSelCB.checked = selectByMouse
onTextEdited: textFieldEditedInd.blip()
onTextChanged: textFieldChangedInd.blip()
onPreeditTextChanged: textFieldPreeditInd.blip()
onDisplayTextChanged: textFieldDisplayTextInd.blip()
onSelectedTextChanged: textFieldSelectedTextChangedInd.blip()
}
SignalIndicator {
id: textFieldEditedInd
label: "textEdited"
}
// ----------------------------------------------------
Text { text: "text" }
Text { text: textField.text; Layout.fillWidth: true }
SignalIndicator {
id: textFieldChangedInd
label: "textChanged"
}
// ----------------------------------------------------
Text { text: "preeditText" }
Text { text: textField.preeditText; Layout.fillWidth: true }
SignalIndicator {
id: textFieldPreeditInd
label: "preeditTextChanged"
}
// ----------------------------------------------------
Text { text: "displayText" }
Text { text: textField.displayText; Layout.fillWidth: true }
SignalIndicator {
id: textFieldDisplayTextInd
label: "displayTextChanged"
}
// ----------------------------------------------------
Text { text: "selectedText" }
Text { text: textField.selectedText; Layout.fillWidth: true }
SignalIndicator {
id: textFieldSelectedTextChangedInd
label: "selectedTextChanged"
}
// ====================================================
Rule {
Layout.columnSpan: 3
Layout.fillWidth: true
text: "tools"
}
// ----------------------------------------------------
TextField {
id: copyFrom
Layout.column: 1
Layout.row: 14
Layout.fillWidth: true
text: "copy this"
}
Button {
text: "setText"
Layout.column: 2
Layout.row: 14
Layout.fillWidth: false
onClicked: {
Qt.inputMethod.reset()
textInput.text = copyFrom.text
textField.text = copyFrom.text
textEdit.text = copyFrom.text
textArea.text = copyFrom.text
}
}
// ====================================================
Rule {
Layout.columnSpan: 3
Layout.fillWidth: true
text: "TextEdit in Flickable"
}
// ----------------------------------------------------
ColumnLayout {
CheckBox {
id: textEditReadOnly
text: "read-only"
Layout.fillWidth: false
}
CheckBox {
id: textEditMouseSelCB
text: "mouse select"
Layout.fillWidth: false
onCheckedChanged: textEdit.selectByMouse = checked
}
CheckBox {
id: textEditPressDelayCB
Layout.fillWidth: false
text: "press delay: " + flick.pressDelay
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 100
radius: 4; antialiasing: true
border.color: "black"; color: "transparent"
Flickable {
id: flick
anchors.fill: parent; anchors.margins: 4
contentHeight: textEdit.paintedHeight
clip: true
pressDelay: textEditPressDelayCB.checked ? 500 : 0
function ensureVisible(r)
{
if (contentX >= r.x)
contentX = r.x;
else if (contentX+width <= r.x+r.width)
contentX = r.x+r.width-width;
if (contentY >= r.y)
contentY = r.y;
else if (contentY+height <= r.y+r.height)
contentY = r.y+r.height-height;
}
ScrollBar.vertical: ScrollBar { }
TextEdit {
id: textEdit
textFormat: TextArea.AutoText
width: flick.width - 10
wrapMode: TextEdit.Wrap
enabled: enabledCB.checked
readOnly: textEditReadOnly.checked
Component.onCompleted: textEditMouseSelCB.checked = selectByMouse
onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
onEditingFinished: textEditEditedInd.blip()
onTextChanged: textEditChangedInd.blip()
onPreeditTextChanged: preeditEditInd.blip()
onSelectedTextChanged: selectedTextChangedInd.blip()
onHoveredLinkChanged: hoveredLinkChangedInd.blip()
onLinkActivated: (text) => {
linkActivatedInd.blip()
linkActivatedText.text = text
}
}
}
}
SignalIndicator {
id: textEditEditedInd
label: "editingFinished"
}
// ----------------------------------------------------
Text { text: "text" }
Text {
text: textEdit.text
Layout.fillWidth: true
Layout.maximumHeight: textEditChangedInd.implicitHeight * 1.5
clip: true
}
SignalIndicator {
id: textEditChangedInd
label: "textChanged"
}
// ----------------------------------------------------
Text { text: "preeditText" }
Text { text: textEdit.preeditText; Layout.fillWidth: true }
SignalIndicator {
id: preeditEditInd
label: "preeditTextChanged"
}
// ----------------------------------------------------
Text { text: "selectedText" }
Text {
text: textEdit.selectedText
Layout.fillWidth: true
Layout.maximumHeight: selectedTextChangedInd.implicitHeight * 1.5
clip: true
}
SignalIndicator {
id: selectedTextChangedInd
label: "selectedTextChanged"
}
// ----------------------------------------------------
Text { text: "hoveredLink" }
Text { text: textEdit.hoveredLink; Layout.fillWidth: true }
SignalIndicator {
id: hoveredLinkChangedInd
label: "hoveredLinkChanged"
}
// ----------------------------------------------------
Text { text: "linkActivated" }
Text { id: linkActivatedText; Layout.fillWidth: true }
SignalIndicator {
id: linkActivatedInd
label: "linkActivated"
}
// ====================================================
Rule {
Layout.columnSpan: 3
Layout.fillWidth: true
text: "TextArea in ScrollView"
}
// ----------------------------------------------------
ColumnLayout {
CheckBox {
id: textAreaReadOnly
text: "read-only"
Layout.fillWidth: false
}
CheckBox {
id: textAreaMouseSelCB
text: "mouse select"
Layout.fillWidth: false
onCheckedChanged: textArea.selectByMouse = checked
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 100
radius: 4; antialiasing: true
border.color: "black"; color: "transparent"
ScrollView {
id: view
anchors.fill: parent; anchors.margins: 4
// pressDelay is not directly possible: QTBUG-104794
TextArea {
id: textArea
textFormat: TextArea.AutoText
enabled: enabledCB.checked
readOnly: textAreaReadOnly.checked
Component.onCompleted: textAreaMouseSelCB.checked = selectByMouse
onEditingFinished: textAreaEditedInd.blip()
onTextChanged: textAreaChangedInd.blip()
onPreeditTextChanged: preeditAreaInd.blip()
onSelectedTextChanged: selectedTextChangedAreaInd.blip()
onHoveredLinkChanged: hoveredLinkChangedAreaInd.blip()
onLinkActivated: (text) => {
linkActivatedAreaInd.blip()
linkActivatedAreaText.text = text
}
}
}
}
SignalIndicator {
id: textAreaEditedInd
label: "editingFinished"
}
// ----------------------------------------------------
Text { text: "text" }
Text {
text: textArea.text
Layout.fillWidth: true
Layout.maximumHeight: textAreaChangedInd.implicitHeight * 1.5
clip: true
}
SignalIndicator {
id: textAreaChangedInd
label: "textChanged"
}
// ----------------------------------------------------
Text { text: "preeditText" }
Text { text: textArea.preeditText; Layout.fillWidth: true }
SignalIndicator {
id: preeditAreaInd
label: "preeditTextChanged"
}
// ----------------------------------------------------
Text { text: "selectedText" }
Text {
text: textArea.selectedText
Layout.fillWidth: true
Layout.maximumHeight: selectedTextChangedAreaInd.implicitHeight * 1.5
clip: true
}
SignalIndicator {
id: selectedTextChangedAreaInd
label: "selectedTextChanged"
}
// ----------------------------------------------------
Text { text: "hoveredLink" }
Text { text: textArea.hoveredLink; Layout.fillWidth: true }
SignalIndicator {
id: hoveredLinkChangedAreaInd
label: "hoveredLinkChanged"
}
// ----------------------------------------------------
Text { text: "linkActivated" }
Text { id: linkActivatedAreaText; Layout.fillWidth: true }
SignalIndicator {
id: linkActivatedAreaInd
label: "linkActivated"
}
}
}