嗨,我有一些问题将滚动条移至顶部。我将图像放入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); }); }