qt中文本光标的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt中文本光标的使用相关的知识,希望对你有一定的参考价值。

参考技术A

有时,我们需要通过qt中的按钮向文本编辑或者文本行编辑输入文字,比如

ui->textEdit->setText(str); 这时不会在文本中显示光标,因为按了按钮后qt就没有停留在文本编辑这个控件上了,用

就可以显示光标了,这时,光标会默认出现在文本开头处

可以获取光标,然后调用myCursor.position()函数可以获取光标的位置,返回值

是一个整数,比如,光标在第一个字符和第二个字符之间,返回1,以此类推。

接下来移动光标,比如:

也可以 myCursor.movePosition(QTextCursor::Left,QTextCursor::MoveAnchor,3);

这样就可以一次移动3格了

movePosition()的第一个参数是确认移动方式,可以左右移动,也可以移到开头

等等,第二个参数一共有两种,如果是 QTextCursor::MoveAnchor ,那么就是简

单的移动光标,如果是 QTextCursor::KeepAnchor ,那么在移动光标的同时,选

中文本。最后用 ui->textEdit->setTextCursor(myCursor); 就可以设置你想要的文

本光标了。

如何在我的 qt 快速应用程序中更改 android 上的默认文本编辑器光标?

【中文标题】如何在我的 qt 快速应用程序中更改 android 上的默认文本编辑器光标?【英文标题】:How Change the default text edit cursor on android in my qt quick applicaton? 【发布时间】:2021-02-16 12:44:59 【问题描述】:

我想更改文本编辑光标的默认形状,它应该如下所示

TextArea 
    id: txtTalk
    anchors.fill: parent
    leftPadding: 9
    rightPadding: 9
    wrapMode: TextArea.Wrap
    color: Material.color(Material.Red,Material.Shade900)
    background: Rectangle
        radius: 3
        color: Material.color(Material.Red,Material.Shade50)
        border.width: 1
        border.color: Material.color(Material.Red,Material.Shade300)
    

【问题讨论】:

我发现这篇文章可能对你有帮助 ***.com/questions/58719796/… 看看 cursorDelegate 属性 【参考方案1】:

下面的代码应该做你想做的事。你也可以添加闪烁动画,看看这个CursorDelegate example。 QML 中 SVG 的唯一问题是别名不佳。您可以做的是组成两个矩形的“引脚”,一个具有圆角(半径属性),另一个旋转。或者您可以看看如何在 QML 中使用 SVG 消除别名。

除了使用PathSVG,您还可以编写PathLine 和PathArc 的图钉图标。

请记住,我没有注意引脚的动态放置及其缩放比例,我调整了这些值,直到看起来没问题。另一件事是根据您的字体大小缩放图钉。

import QtQuick 2.0
import QtQuick.Controls 2.15
import QtQuick.Shapes 1.15

Item 
    width: 640
    height: 480

    TextArea 
        anchors.centerIn: parent
        wrapMode: TextArea.Wrap
        color: "gray"
        font.pixelSize: 24
        background: Rectangle
            implicitWidth: 300
            implicitHeight: 200
            radius: 3
            color: "white"
            border.width: 1
            border.color: "black"
        
        placeholderText: qsTr("Enter description")

        cursorDelegate: Item 
            width: 1
            Rectangle 
                id: rectangle
                color: "black"
                y: 1
                width: 2
                height: parent.height - 2

                Shape 
                    x: -8
                    y: rectangle.height + 2

                    ShapePath 
                        fillColor: "red"
                        strokeWidth: -1
                        scale: Qt.size(0.2, 0.2)
                        PathSvg  path: "M 45,90 C 25.463,90 9.625,74.162 9.625,54.625 c 0,-8.722 3.171,-16.693 8.404,-22.861 L 45,0 71.97,31.765 c 5.233,6.167 8.404,14.139 8.404,22.861 C 80.375,74.162 64.537,90 45,90 Z" 
                    
                
            
        
    

【讨论】:

它显示指示器。但是,它应该在我编辑时才显示,并不总是,默认光标也显示如何隐藏它

以上是关于qt中文本光标的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QT Designer 中指定默认文本光标小部件

Qt 5.8 QTextEdit 文本光标颜色不会改变

qt qtextedit 怎样删除光标前一个字符

Qt富文本编辑器QTextDocument

获取 Xorg 下插入符号(输入文本光标)的 X/Y 位置?

Qt Tooltip如何防止文本在内置延迟后消失?