社区
Qt
帖子详情
QT中用什么来显示日志最方便?
pang2042
2010-08-31 06:42:51
我想用一个东西显示日志,就是每次往里添加一行文本,然后滚动到末尾这样就行了。
当前我用的是QListWidget 实现的,但是在addItem后马上调用scrollToBottom()经常会出现错误,在其paintEvent里面会出现QVector访问越界,我想可能是因为addItem的线程非主线程导致的,不知道怎么搞。
另外请教各位其它还有没有什么好的QWidget方便显示日志?
...全文
1703
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行以内。还给出了
QT
extEdit设置文本、获取内容、删除内容、追加内容等操作的代码示例,此外还涉及
Qt
常用控件、布局等相关知识。
Qt
实现 Logger
日志
的
显示
本文介绍了
Qt
中
日志
记录的不同方法,包括使用
Qt
qDebugor开源库、QsLog和QxtLogger等。探讨了如何通过QPlainTextEdit、QListWidget或
QT
ableWidget展示
日志
,并讨论了单例模式在
日志
显示
窗口中的应用。
QT
—
QT
extEdit控件
显示
日志
该博客介绍利用
QT
extEdit开发
日志
显示
窗口,要实现
日志
自动向上滚动,控制
日志
量在x行以内。给出了相关代码示例,包括定义
QT
extEdit、设置文本、获取首行内容、利用光标删除内容、追加文本等操作,还测试了光标位置对追加内容的影响。
Qt
开发之路60---
Qt
日志
重定向之输出Log至文件或UI控件上
这篇博客介绍了如何使用
Qt
进行调试信息的管理和输出,包括
Qt
的
日志
级别如Debug、Warning、Info、Critical和Fatal,以及如何通过qInstallMessageHandler函数重定向调试消息。示例代码展示了如何将
日志
信息写入文件和实时
显示
在UI界面的文本编辑框中,确保在多线程环境中安全地更新UI。
QT
串口和CAN数据动态实时
显示
最后
日志
本文对比了使用
QT
进行串口和CAN通讯上位机编程的体验。从对象编程与逻辑编程的区别入手,详细分析了
QT
中串口和CAN的具体实现方式及优缺点,并总结了两者的实际应用表现。
Qt
21,495
社区成员
26,692
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章