QTextEdit实时显示运行结果

最近用Qt界面程序用来处理序列图像的目标检测,每次输入一组序列图,检测结果(每一帧图像上目标的个数,对应坐标,置信度等)除了以图像形式实时显示意外,还需要以文本形式显示在界面上。

我采用了QTextEdit控件来显示文本。实现主要流程如下:

1,每一帧图像检测完成后,调用一个消息函数,消息函数的参数为要显示的QString;

2,收到消息后槽函数执行文本显示函数。


示例:

1.h:

Signals:

void sendMessage(QString msg);//信号函数只有声明,不需要写定义

1.cpp:

for(int i=0,i<resultCount;i++)

{

QString  message=QString("第%1 个目标  x=%2 y=%3  width=%4  height=%5  置信度 =%6”).arg(i).arg(result[i].x).arg(result[i].y).arg(result[i].w).arg(result[i].h).arg(result[i].v);

sendMessage(message);//发送信号

}

2.h:

public slots:

void receiveMeaage(QString msg);//槽函数

2.cpp:

void MyClass::receiveMeaage(QString msg)

{

ui.myTextEdit->append(msg);//添加字符串作为一个段落到TextEdit控件中

}

以上完成了信号发送和字符串显示到控件上的部分,完事具备,只欠东风,将信号函数和槽函数连接起来就好了。

QObject::connect(this,SIGNAL(sendMessage(QString)),this,SLOT(recieveMessage(QString)));//这里的QString就是QString(有点绕,就是说这里写类型名而非变量名)

至此就实现将程序运行中间结果实时传输到界面上显示了。


再说两个小点:

1,arg()函数是QString的公有函数,可以很方便地替代字符串中的变量,用%1,%2,%3.....表示字符串中的变量(比如每帧图像的中间结果),arg()是重载函数,还可以控制被替换变量的格式,功能比较实用。

2,其实也可以不用信号和槽的形式,直接将槽函数的内容加到发送信号函数的位置,但这样不免失去了Qt的一个重要意义,在很多地方都需要用到这样的功能的时候,一个信号函数就显得简单方便多了。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值