Qt 中聊天会话的最佳小部件

Posted

技术标签:

【中文标题】Qt 中聊天会话的最佳小部件【英文标题】:Best widget for a chat session in Qt 【发布时间】:2013-08-07 10:18:26 【问题描述】:

我正在实现一个使用 XMPP 库进行聊天的桌面 Qt 应用程序。我正在尝试找到性能方面的最佳方法,易于修改,添加自定义内容(例如,如果有人向我发送图像,则显示缩略图)...... 我想知道您认为哪种方法最好: - 每个元素作为布局或小部件,并逐个添加(似乎很慢) - ListWidget 项目重载绘画事件(问题:绘画前不知道项目高度) - 使用富文本小部件并将聊天构建为 html 页面(尚未尝试过) - ??

最好的问候,

【问题讨论】:

【参考方案1】:

QListView 对简单的 IRC 聊天很有用。如果您打算实现一些高级文本样式(不同的字体等)或图像(如您所说),WebView 是要走的路。此外,比 QListView 更简单的方法。

甚至还有一个使用 QtWebKit 的示例 Qt Google Chat 项目:http://harmattan-dev.nokia.com/docs/library/html/qt4/webkit-googlechat.html

【讨论】:

用户您好,感谢您的帮助。我需要一个很酷的小部件,因为我想放一些东西,例如 WhatsApp(图像、声音、群聊......) @DídacPérez:群聊是一个不同的层,但使用 webview 应该很容易听。您已经内置了 HTML5 音频和视频。 @DídacPérez 你在 QWebView 方面取得了进展吗?我想走同样的路,我需要一些智慧:)。 没有成功,几个月前我一直没有在做这件事。对不起:)【参考方案2】:

我会选择带有附加模型和自定义委托等的 QListView。

【讨论】:

感谢您的回答。关键是我以前不知道文本的长度,所以也许我必须拉伸项目的高度,而我无法做到这一点,因为我在 paint() 方法中绘制了所有内容。跨度> 我可以使用 QFontMetrics 来计算文本的高度,但是计算所有项目的度量需要太多时间... :-( 在此解决方案中要考虑的一件事是是否可以跨多个列表项选择文本?

以上是关于Qt 中聊天会话的最佳小部件的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 中创建小部件预览

如何计算存储在 Gtk::Grid 中的小部件?

Qt 在另一个小部件中调整小部件的大小

qt - 在父窗口/小部件类中初始化子小部件的目的是啥?

具有重叠子小部件的 Qt 自定义小部件

如何关闭在提升的小部件中单击的按钮上的 qt 小部件 ui?