首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTextTable将QTextCursor移动到确定的单元格

QTextTable将QTextCursor移动到确定的单元格
EN

Stack Overflow用户
提问于 2022-01-16 17:03:34
回答 2查看 149关注 0票数 0

我有一个QTextTable,我在表中做了一些操作,我想要两件事:

  • QTextCursor返回到单元格(0,0)
  • 或将QTextCursor移动到单元格(行、列)

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-16 23:22:55

对于给定类型的table对象,QTextTable获取所需的游标:

代码语言:javascript
复制
auto tableCell = table->cellAt(row, column);
auto cursor = tableCell.firstCursorPosition();

然后在编辑的setTextCursor对象中使用QTextEdit

票数 1
EN

Stack Overflow用户

发布于 2022-01-18 19:16:35

按照@ekhumoro和@retmas的建议,我这样做:

代码语言:javascript
复制
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QTextCursor

#### EKHUMORO suggestion
def move_cursor(table_text,cursor,row_destiny,col_destiny):
    row=table_text.cellAt(cursor).row()
    while not row==row_destiny:
        if row<row_destiny:
            cursor.movePosition(QTextCursor.NextRow)
        else:
            cursor.movePosition(QTextCursor.PreviousRow)
        row=table_text.cellAt(cursor).row()  
    
    col=table_text.cellAt(cursor).column()
    while not col==col_destiny:
        if col<col_destiny:
            cursor.movePosition(QTextCursor.NextCell)    
        else:
            cursor.movePosition(QTextCursor.PreviousCell)
        col=table_text.cellAt(cursor).column()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QTextEdit()
       
    cursor=widget.textCursor()
    table_text=cursor.insertTable(10,10)

    # Format Table
    fmt = table_text.format()
    fmt.setWidth(QtGui.QTextLength(QtGui.QTextLength.PercentageLength, 100))
    table_text.setFormat(fmt)
    
    row=2
    col=5
    move_cursor(table_text,cursor,row,col)
    cursor.insertText('Cell {} {}'.format(row,col))   
    
    #### RETMAS SUGGESTION
    row=3
    column=6
    tableCell = table_text.cellAt(row, column)
    cursor = tableCell.firstCursorPosition() 
    widget.setTextCursor(cursor)
    cursor.insertText('Cell {} {}'.format(row,column))         

    widget.show()    
    sys.exit(app.exec_())

这个很好用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70732263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档