需要实现的功能
在窗体下面加一个信息框 类似于QstatusBar,不过要区别于QstatusBar。
即 需要在点击时显示出所有的信息,在不点击时显示当前最新的信息。
同时要求信息框能随着界面宽度伸缩。
思路
- 将QTextEdit放入到QstatusBar中,达到置于窗体底部和随界面伸缩调整宽度的目的;
- 通过事件过滤器设置鼠标行为,单击时:让信息框伸展;
双击时:让信息框收缩; - 通过 QTextEdit中的信号textChanged()触发一个槽,执行
textEdit->moveCursor(QTextCursor::End); 达到显示当前最新信息的目的。
代码
mainwindow.h
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
textEdit(new QTextEdit),
i(0)
{
ui->setupUi(this);
textEdit->viewport()->installEventFilter(this);//安装事件监控器
QFont font;//字体
font.setPointSize(16);
textEdit->setFont(font);
textEdit->setMinimumHeight(31);
ui->statusBar->addWidget(textEdit,this->width());
textEdit->setReadOnly(true);
QString strr=QString("<font color=\"#FF0000\">警告:%1发送频率过快!</font> ").arg(0);
textEdit->append(strr);
connect(textEdit,SIGNAL(textChanged