社区
Qt
帖子详情
QT中用什么来显示日志最方便?
pang2042
2010-08-31 06:42:51
我想用一个东西显示日志,就是每次往里添加一行文本,然后滚动到末尾这样就行了。
当前我用的是QListWidget 实现的,但是在addItem后马上调用scrollToBottom()经常会出现错误,在其paintEvent里面会出现QVector访问越界,我想可能是因为addItem的线程非主线程导致的,不知道怎么搞。
另外请教各位其它还有没有什么好的QWidget方便显示日志?
...全文
1659
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
的现代智能家居源码.rar
在这个项目中,我们可以预见有多个界面,如设备列表、设备控制面板、场景设置等,这些都可能通过
Qt
Designer来设计并导出为.ui文件,然后在代码
中用
到。 在智能家居系统中,设备管理是核心部分。可能包含设备发现、...
samp7_1TextFile.zip
- **QFile类**:这是
Qt
中用
来处理文件的核心类。通过创建QFile对象并指定文件路径,我们可以打开、读取、写入和关闭文件。 - **
QT
extStream类**:与QFile配合使用,提供了一种
方便
的方式来读取和写入文本数据。...
时间同步
日志
TimeSynca周和周内秒解析模块.rar
跳秒是一种在协调世界时(UTC)
中用
以校正地球自转速度不规则变化的措施,它会导致时间的不连续性,给时间同步操作带来难度。通过直接使用GPS时间,可以将这种不确定性降到最低,提高系统时间的准确性和稳定性。 在...
键盘控制button移动
QT
是一个强大的跨平台应用程序框架,它提供了丰富的API来处理各种用户交互,包括键盘事件。本项目"键盘控制button移动"就是一个很好的实例,展示了如何利用
QT
来响应键盘输入并更新界面上的元素,比如按钮(button)...
tidy000000.rar
Qt
4提供了多种类来处理文本,如`QString`,它是
Qt
中用
来存储和操作Unicode文本的基本类型。`QString`类提供了丰富的文本操作方法,例如拼接、查找、替换等。此外,还有`
QT
extStream`,这是一个高级的I/O流类,特别...
Qt
21,469
社区成员
26,689
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章