1.5w+
社区成员
如题,主窗口有一个按钮,点击按钮会有一个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里输入内容时,这个按钮自动不置灰,并可以点击。以上两个问题,各位大佬们有没有办法解决呢?欢迎大佬们指点一二,在此感激不尽。
你的代码写的鼠标光标移动至开头,没问题,但写初始化里只执行一次所以看着没效果。
\\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;
}