QTextBrowser使用的几个疑问

lwei2 2023-03-08 16:33:14

如题,主窗口有一个按钮,点击按钮会有一个QMainWindow的派生类MyWindow。其中MyWindow使用QTextBrowser类创建对象,具体代码如下:

    m_textBrowser = new QTextBrowser(m_widgetMain);
    m_textBrowser->setFont(QFont("Microsoft YaHei", 12));
    m_textBrowser->setReadOnly(false);
    m_textBrowser->setOpenExternalLinks(true);
    QTextCursor cursor(m_textBrowser->textCursor());
    cursor.movePosition(QTextCursor::Start);//此处鼠标光标为啥没有停在最开头位置
    m_textBrowser->setTextCursor(cursor);
    m_textBrowser->installEventFilter(this);
    m_textBrowser->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    m_textBrowser->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

想实现点击主窗口光标自动显示在m_textBrowser最开始的地方。但以上代码还是没有能实现,同时,MyWindow窗口上还有一个按钮,当m_textBrowser里的内容为空时,这个按钮置灰,当我向m_textBrowser里输入内容时,这个按钮自动不置灰,并可以点击。以上两个问题,各位大佬们有没有办法解决呢?欢迎大佬们指点一二,在此感激不尽。

...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
红豆泥明月 2023-03-22
  • 打赏
  • 举报
回复

你的代码写的鼠标光标移动至开头,没问题,但写初始化里只执行一次所以看着没效果。

\\mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    void changeButtonslot();
    ~MainWindow();
protected:
    virtual void focusInEvent(QFocusEvent *e);
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->textBrowser->setFont(QFont("Microsoft YaHei", 12));
    ui->textBrowser->setReadOnly(false);
    ui->textBrowser->append("test\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest");
    this->setFocusPolicy(Qt::ClickFocus);
    connect(ui->textBrowser,&QTextBrowser::textChanged,this,&MainWindow::changeButtonslot);
}
void MainWindow::changeButtonslot()
{
    if (ui->textBrowser->document()->isEmpty())
    {
        ui->pushButton->setEnabled(false);
    }
    else
    {
        ui->pushButton->setEnabled(true);
    }
}
void MainWindow::focusInEvent(QFocusEvent *event)
{
    QTextCursor cursor = ui->textBrowser->textCursor();
    cursor.movePosition(QTextCursor::Start);
    ui->textBrowser->setTextCursor(cursor);
}
MainWindow::~MainWindow()
{
    delete ui;
}
lwei2 2023-03-23
  • 举报
回复
@红豆泥明月 好的,多谢了!

16,492

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧