社区
Qt
帖子详情
QT中用什么来显示日志最方便?
pang2042
2010-08-31 06:42:51
我想用一个东西显示日志,就是每次往里添加一行文本,然后滚动到末尾这样就行了。
当前我用的是QListWidget 实现的,但是在addItem后马上调用scrollToBottom()经常会出现错误,在其paintEvent里面会出现QVector访问越界,我想可能是因为addItem的线程非主线程导致的,不知道怎么搞。
另外请教各位其它还有没有什么好的QWidget方便显示日志?
...全文
1713
14
打赏
收藏
QT中用什么来显示日志最方便?
我想用一个东西显示日志,就是每次往里添加一行文本,然后滚动到末尾这样就行了。 当前我用的是QListWidget 实现的,但是在addItem后马上调用scrollToBottom()经常会出现错误,在其paintEvent里面会出现QVector访问越界,我想可能是因为addItem的线程非主线程导致的,不知道怎么搞。 另外请教各位其它还有没有什么好的QWidget方便显示日志?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dext
2010-09-03
打赏
举报
回复
怎么回答你?回答 是的 太简单了。
其实 你可以在 emit 之前创建对象, emit 传入指针,在在槽中释放
[Quote=引用 12 楼 pang2042 的回复:]
多谢。如果在非主线程中调emit的时候需要传递参数,因为是异步的,不能保证这参数有效?比如我传一个指针过去,emit后这个指针指向的对象很有可能已经被销毁了,这种情况不就出错了啊?是不是传递参数用值传递方式就能避免这种情况?
[/Quote]
车太靓
2010-09-03
打赏
举报
回复
QTextEdit
pang2042
2010-09-02
打赏
举报
回复
[Quote=引用 11 楼 dext 的回复:]
在 QListWidget 申明 槽,你的做法对了。
[/Quote]
多谢。如果在非主线程中调emit的时候需要传递参数,因为是异步的,不能保证这参数有效?比如我传一个指针过去,emit后这个指针指向的对象很有可能已经被销毁了,这种情况不就出错了啊?是不是传递参数用值传递方式就能避免这种情况?
dext
2010-09-02
打赏
举报
回复
在 QListWidget 申明 槽,你的做法对了。
dext
2010-09-02
打赏
举报
回复
一般的做法是,在你要作出修改的类中(这个类一般不是QListWidget),声明信号
然后 在这个类的构造函数中 连接信号和槽,最后 在要修改的地方 调用 emit
[Quote=引用 9 楼 pang2042 的回复:]
引用 7 楼 dext 的回复:
假设我继承实现一个QListWidget,添加了一个slot叫Log(char*);那么我在非主线程中应该怎么去调用这个Log槽才能保险,是不是得在这个QListWidget中再添加一个相应的singal,然后在这……
[/Quote]
千羽鸣
2010-09-01
打赏
举报
回复
如果你是在Linux下面做的话,在程序运行过程中要出调试信息直接在其中加入像cout,printf这些Console下用的东西,如果是在Creator中运行,这些信息会被打印到下方的框中,如果是在控制台上启动,界面照常用,信息会被打印到控制台上。不知道你做的是什么程序,如果功能实现部分并不需要界面高耦合支持的话,可以把功能实现分离出来单独作为一个线程从界面中启动,这时候你的界面就是主线程,而功能实现是子线程。我最近做的一个联网客户端就是这样实现的,两个线程通过signal-slot通讯,自我感觉耦合度很低……
pang2042
2010-09-01
打赏
举报
回复
[Quote=引用 7 楼 dext 的回复:]
应该在 线程中 使用信号-槽机制 修改 GUI 的内容,至于 是使用 ListWidget 还是 TextWidget 纯属个人喜好了。
[/Quote]
假设我继承实现一个QListWidget,添加了一个slot叫Log(char*);那么我在非主线程中应该怎么去调用这个Log槽才能保险,是不是得在这个QListWidget中再添加一个相应的singal,然后在这个非主线程中使用emit来引发?
dext
2010-09-01
打赏
举报
回复
应该在 线程中 使用信号-槽机制 修改 GUI 的内容,至于 是使用 ListWidget 还是 TextWidget 纯属个人喜好了。
qter_wd007
2010-08-31
打赏
举报
回复
用QTextEdit的更为常见些,个人感觉。
lefttime
2010-08-31
打赏
举报
回复
作为消息的载体, QListWidget还是不错的!
感觉再考虑线程的控制上找问题~``
如果想看其它的QWidget, 估计QTextEdit、QTextBrowser等都应该符合你的要求~``
巴依老爷
2010-08-31
打赏
举报
回复
qDebug()不能满足要求么?
pang2042
2010-08-31
打赏
举报
回复
[Quote=引用 2 楼 tingsking18 的回复:]
搞成console application,直接在command line下打印日志信息。
[/Quote]
不能做成console application,界面的其它部分很多。显示日志信息只是其中一个部分,程序在运行过程中的各类消息提示得有个显示的地方
tingsking18
2010-08-31
打赏
举报
回复
搞成console application,直接在command line下打印日志信息。
pang2042
2010-08-31
打赏
举报
回复
另外加问一下,QT里有没有办法把与界面操作相关的的内容都送到主线程上去执行,有点像win32里SendMessage之类的
qt
在
qt
extedit
显示
数组_
QT
—
QT
extEdit控件
显示
日志
功能:利用
QT
extEdit开发一个
日志
显示
窗口。没有太多操作,需要实现的是
日志
自动向上滚动,总体的
日志
量可以控制在x行(比如300行)以内;其他的应用功能我后面继续添加#include #include #include #include QString text;text = "1111111111111111111111111111\n"\"2222222222222222222222222...
Qt
实现 Logger
日志
的
显示
来源:http://my.oschina.net/gongshang/blog/353590 摘要
日志
一般是程序员自己看,即使程序中需要用控件
显示
,要求一般也不太高。 但需要能够控制
显示
的总共行数,能够备份至文件。这里记录写网上搜集整理的资料和个人的经验。
Qt
qDebug or 开源库 基于
Qt
qDebug
Qt
提供 qInstallMessageHandle
QT
—
QT
extEdit控件
显示
日志
功能:利用
QT
extEdit开发一个
日志
显示
窗口。没有太多操作,需要实现的是
日志
自动向上滚动,总体的
日志
量可以控制在x行(比如300行)以内;其他的应用功能我后面继续添加 1 #include <
QT
extBlock> 2 3 #include <
QT
extEdit> 4 5 #include <QDebug> 6 7...
Qt
开发之路60---
Qt
日志
重定向之输出Log至文件或UI控件上
软件里面的打印信息,通过
日志
记录到文件或者输出到控件上,
方便
查看。
Qt
有Debug、Warning、Info、Critical、Fatal五种级别的调试信息。
Qt
4提供了qInstallMsgHandler函数
Qt
5提供了qInstallMessageHandler函数 对qDebug、qWarning、qCritical、qFatal等函数输出信息的重定向处理。...
QT
串口和CAN数据动态实时
显示
最后
日志
前言 从11月20号到12月10号,编写
QT
的串口和CAN通讯的上位机
显示
程序,经历20天。整个项目下来,感觉软件方面,特别是面对对象编程方面有了一定的了解,也了解到面对对象编程和面向逻辑编程的区别。整体来说,编程过程区别不是很大:面对对象编程也需要逻辑编程,而逻辑编程不包含对象编程。至于串口和CAN的区别,仅仅是底层硬件的区别,对于上层编程来说,区别并不是很大。 第一部分:对象编程和逻辑编程 (1)语言用法不用:
QT
基于c++,单片机基于C。前者基于类,后者最多用到结构体。相对来说逻辑编程入..
Qt
21,503
社区成员
26,693
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章