社区
Qt
帖子详情
QT中用什么来显示日志最方便?
pang2042
2010-08-31 06:42:51
我想用一个东西显示日志,就是每次往里添加一行文本,然后滚动到末尾这样就行了。
当前我用的是QListWidget 实现的,但是在addItem后马上调用scrollToBottom()经常会出现错误,在其paintEvent里面会出现QVector访问越界,我想可能是因为addItem的线程非主线程导致的,不知道怎么搞。
另外请教各位其它还有没有什么好的QWidget方便显示日志?
...全文
1621
14
打赏
收藏
QT中用什么来显示日志最方便?
我想用一个东西显示日志,就是每次往里添加一行文本,然后滚动到末尾这样就行了。 当前我用的是QListWidget 实现的,但是在addItem后马上调用scrollToBottom()经常会出现错误,在其paintEvent里面会出现QVector访问越界,我想可能是因为addItem的线程非主线程导致的,不知道怎么搞。 另外请教各位其它还有没有什么好的QWidget方便显示日志?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
的现代智能家居源码.rar
基于
QT
的现代智能家居源码
samp7_1TextFile.zip
记录了简单的文本读写的操作方式,
方便
读取,记录了一个简单的例子,在运用开发的时候,有不错的借鉴,本例子为
qt
5.9中的例子。希望大家多多支持
键盘控制button移动
完整工程程序,可以通过w,a,s,d控制button的移动,是学习键盘事件很好的例程
tidy000000.rar
Qt
4_读取和写入文本
QSqlQuery访问数据库的封装类
一个
QT
QSqlQuery访问数据库的封装类,里面封装了数据库相关类,使用单例及互斥锁保证数据库访问安全,及其使用案例,源码。
Qt
16,805
社区成员
26,681
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章