将短信的卷轴移至顶部

Move Scrollbar of a textedit to the top

本文关键字:顶部      更新时间:2023-10-16

嗨,我有一些问题将滚动条移至顶部。我将图像放入QTEXTEDIT中,当我打开时,滚动栏就在底部。我需要滚动条在顶部

我尝试了所有这些,但对我不起作用。仍然一样。

ui.textEdit->verticalScrollBar()->setValue(0);
myTextEdit -> moveCursor (QTextCursor::Start) ;
myTextEdit -> ensureCursorVisible() ;
QScrollBar *vScrollBar = yourTextEdit->verticalScrollBar();
vScrollBar->triggerAction(QScrollBar::SliderToMinimum);

这是我的代码。

RulesDialog::RulesDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::RulesDialog)
{
    ui->setupUi(this);    
    setWindowIcon(QIcon(":/images/icon3.png"));
    ui->textEdit->insertHtml("<img src=':/images/reglas.png'>");
}
  • myTextEdit->moveCursor(QTextCursor::Start);
    这是不起作用的,因为光标覆盖了图像的垂直长度,因此不会移动,滚动条也不会移动。如果您的图像上方有文本,则可以工作。

  • vScrollBar->triggerAction(QScrollBar::SliderToMinimum);
    我认为这是行不通的,因为QTextEdit将在插入后的下一个QT事件循环更新中向下滚动。以下是一个解决方法,它将滚动递归到下一个事件循环更新:

    RulesDialog::RulesDialog(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::RulesDialog)
    {
        ui->setupUi(this);    
        setWindowIcon(QIcon(":/images/icon3.png"));
        ui->textEdit->insertHtml("<img src=':/images/reglas.png'>");
        scrollUpLater();
    }
    void RulesDialog::scrollUpLater()
    {
        QTimer::singleShot(0, [this](){
            ui->textEdit->verticalScrollBar()->triggerAction(QScrollBar::SliderToMinimum);
            // or // ui->textEdit->verticalScrollBar()->setValue(0);
        });
    }