• 5748阅读
  • 5回复

如何实现QTextBrowser 中内容的 纵向滚动 [复制链接]

上一主题 下一主题
离线conanx
 

只看楼主 倒序阅读 楼主  发表于: 2011-10-08
如何实现QTextBrowser 中内容的 纵向滚动
关键词: 窗口没有QLabel
开始想尝试用QLabel做,但是QLabel 不管怎么设置竟然不能自动换行,无奈之下选择QTextBrowser,虽然可以换行,但是内容的滚动却没有实现,(我所要的滚动窗口中不能有ScrollBar的出现),请大侠帮忙!
离线conanx

只看该作者 1楼 发表于: 2011-10-08
好吧,我刚已经搞定了! 直接上代码!我用的空间是QTextEdit,现在还有一个问题没解决,背景颜色无法透明。
TT_VScrollItem::TT_VScrollItem(QWidget *parent)
{
    //初始化变量默认值
    mTimer = 500;
    step = 2;
    vBar = verticalScrollBar();
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

    if(parent)
    {
        setParent(parent);
    }

    //屏蔽横竖两坐标轴的滚动条
    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setReadOnly(true);          //设内容为只读
    setAlignment(Qt::AlignLeft | Qt::AlignTop); //设置内容居左上角

//    setAutoFillBackground(true);
//    setAttribute(Qt::WA_TranslucentBackground, true);

    QPalette pal = this->palette();
    pal.setColor(QPalette::Window, Qt::red);
    this->setPalette(pal);

    setFrameShape(QFrame::NoFrame);
    setFrameShadow(QFrame::Sunken);

    startTimer(mTimer);
}

void TT_VScrollItem::timerEvent(QTimerEvent *e)
{
    qDebug("=== TT_VScrollItem::timerEvent ===");
    QTextEdit::timerEvent(e);

    if(vBar->maximum() == 0)
    {
        killTimer(e->timerId());
    }

    if(vBar->value() >= vBar->maximum())
    {
        vBar->setValue(vBar->minimum());
    }
    else
    {
        vBar->setValue(vBar->value()+step);
    }
}


离线conanx

只看该作者 2楼 发表于: 2011-10-08
TT_VScrollItem 是我继承自 QTextEdit的类,只是添加了自己的几个属性变量的设置,没有别的东西!
离线wxj120bw

只看该作者 3楼 发表于: 2011-10-08
回 2楼(conanx) 的帖子
看QLabel的wordWrap手册,QLabel能实现自动换行;内容的滚动的意思是随着内容的增加进行横向和竖向的滚动,始终显示当前光标的位置吗?
离线guixiefang
只看该作者 4楼 发表于: 2011-10-09
请问怎么得到QTextBrowser各行内容的的位置呢?
离线wxj120bw

只看该作者 5楼 发表于: 2011-10-10
回 4楼(guixiefang) 的帖子
你参考下QTextCursor
论坛以前有人说过类似的问题
快速回复
限100 字节
 
上一个 下一个