QTextEdit高度宽度随输入文本变化

97 篇文章 0 订阅
78 篇文章 0 订阅

QTextEdit根据文本内容的多少调整width()和height(),实现自适应的宽度和高度,同时右侧和下方均不出现滚动条。

根据https://bbs.csdn.net/topics/330151382里10楼给出的代码作一定的修改,如下:

QTextEdit的父窗口的构造函数:

    ui->textEdit->resize(24, 42);
    connect(ui->textEdit->document(),SIGNAL(contentsChanged()),this,SLOT(textAreaChanged()));
    ui->textEdit->setLineWrapMode(QTextEdit::NoWrap);

槽函数:

void Widget::textAreaChanged()
{
    QTextDocument *document=qobject_cast<QTextDocument*>(sender());
    document->adjustSize();
    if(document)
    {
        QTextEdit *editor=qobject_cast<QTextEdit*>(document->parent()->parent());
        if(editor)
        {
            int newwidth = document->size().width() + 10;//10
            int newheight = document->size().height() + 20;//20
            if(newwidth != editor->width())
            {
                editor->setFixedWidth(newwidth);
            }
            if(newheight != editor->height())
            {
                editor->setFixedHeight(newheight);
            }
        }
    }
}

将该功能转为PyQt的代码:

QTextEdit的父窗口的构造函数:

        self.width = 24
        self.height = 42
        self.edit.resize(self.width, self.height)
        self.document = self.edit.document()
        self.document.contentsChanged.connect(self.textAreaChanged)
        self.edit.setLineWrapMode(QTextEdit.NoWrap)

槽函数:

    def textAreaChanged(self):
        self.document.adjustSize()

        newWidth = self.document.size().width() + 10
        newHeight = self.document.size().height() + 20
        if newWidth != self.edit.width():
            self.edit.setFixedWidth(newWidth)
        if newHeight != self.edit.height():
            self.edit.setFixedHeight(newHeight)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值