找回密码
 立即注册
收起左侧

求助 仿QQ聊天 编辑窗口 图文混合要怎么写?

24
回复
19802
查看
[复制链接]
累计签到:114 天
连续签到:1 天
来源: 2013-9-20 20:40:25 显示全部楼层 |阅读模式
4Qter豆
本帖最后由 Marvelous 于 2013-9-20 22:01 编辑

求助 如何写仿QQ的聊天编辑窗口?
图文混合编辑 像QQ一样 可以把图片粘贴进来
最后我还想存储到MYSQL
应该怎么做呢?
网上的仿QQ程序 都是要点插入图片 才能把图片插入到qtextedit里的  我想粘贴啊{:soso_e105:}

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

嗯,我曾复制聊天记录然后粘贴到word中,能实现你想要的结果。但是我不知道在word中它是怎么识别文字和图片而且格式还不变的。
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-9-20 20:40:26 显示全部楼层
Marvelous 发表于 2013-9-21 21:43
我要把图片能在Qtextedit中显示 并且是从QQ聊天记录中复制过来  图文混合显示
然后存到数据库中 并且能读 ...

嗯,我曾复制聊天记录然后粘贴到word中,能实现你想要的结果。但是我不知道在word中它是怎么识别文字和图片而且格式还不变的。
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-9-20 22:23:55 显示全部楼层
富文本编辑器,至于数据库的我就不知道怎么弄了。
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-20 22:47:06 显示全部楼层
Syylc120317 发表于 2013-9-20 22:23
富文本编辑器,至于数据库的我就不知道怎么弄了。

看了下书上和论坛的富文本编辑器  功能挺多的  字体 颜色大小 还能另存txt   但是...
没有我想要的图片+文字啊
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-20 22:48:12 显示全部楼层
Syylc120317 发表于 2013-9-20 22:23
富文本编辑器,至于数据库的我就不知道怎么弄了。

qtextedit是可以显示图片的  我在想原理是不是先把粘贴板的图片下载到本地 然后再从本地读到qtextedit上..
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-9-21 14:08:57 显示全部楼层
Marvelous 发表于 2013-9-20 22:48
qtextedit是可以显示图片的  我在想原理是不是先把粘贴板的图片下载到本地 然后再从本地读到qtextedit上. ...

不用下载,直接访问剪贴板就行了。
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-21 14:14:34 显示全部楼层
Syylc120317 发表于 2013-9-21 14:08
不用下载,直接访问剪贴板就行了。

访问剪贴板 是区分text跟image的吧  我只能让其中一个贴上qtextedit 怎么样能让图片按原顺序贴上qtextedit呢?
求指导..

我现在重载了eventFilter 的ctrl+v
    QClipboard * clipboard = QApplication::clipboard();
    if(target == ui->textEdit)
    {
        if (event->type() == QEvent::KeyPress)
        {
                   QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
                   if (keyEvent->matches(QKeySequence:aste))
                   {
       //            if (keyEvent->modifiers() == Qt::ControlModifier
       //                && keyEvent->key() == Qt::Key_V) {
                       qDebug() << "Ctrl + V";
                       ui->textEdit->setText(clipboard->text());
                       return true;
                   }
        }
    }
    return QMainWindow::eventFilter(target, event);

另外有一个按钮能把粘贴板的图片贴上qtextedit
    QClipboard * clipboard = QApplication::clipboard();
    QTextEdit *edit = ui->textEdit;
    QString text = ui->textEdit->toPlainText();
       edit->setHtml(QString("<html>%1</html>").arg(text.replace("\n", "<br>")));

       //QImage image;
       //image.load("istone.jpg");
       if (clipboard->image().isNull()) { return; }

//       int width = edit->viewport()->width() - 7;
//       if (image.size().width() > width || image.size().height() > width) {
//           image = image.scaled(width, width, Qt::KeepAspectRatio, Qt::SmoothTransformation);
//       }


       QTextCursor cursor = edit->textCursor();
       QTextDocument *document = edit->document();
       // 下面的addResource代码非常重要, 内存增加很少
       cursor.movePosition(QTextCursor::End);
       document->addResource(QTextDocument::ImageResource, QUrl("image"), clipboard->image());
       // edit->setAlignment(Qt::AlignCenter);
       cursor.insertImage("image");
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-21 14:17:23 显示全部楼层
Syylc120317 发表于 2013-9-21 14:08
不用下载,直接访问剪贴板就行了。

贴上qtextedit图片的按钮 也不能贴上qq表情或者多个图片
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-9-21 17:31:30 显示全部楼层
Marvelous 发表于 2013-9-21 14:17
贴上qtextedit图片的按钮 也不能贴上qq表情或者多个图片

剪贴板存放着最后复制的对象,如果想要粘贴多个图片的话, 那么这些个对象必须存在在剪贴板上。QQ表情是gif动画, 不能显示gif可能是因为没有添加gif的动态链接库(dll文件)。
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-21 17:50:16 显示全部楼层
本帖最后由 Marvelous 于 2013-9-21 17:51 编辑
Syylc120317 发表于 2013-9-21 17:31
剪贴板存放着最后复制的对象,如果想要粘贴多个图片的话, 那么这些个对象必须存在在剪贴板上。QQ表情是g ...

我换了另一种方式做了 我发现复制后 粘贴板是能把图片粘贴到qtextedit里的  不能显示的原因是资源里没有这些图片
我想修改成 我粘贴到qtextedit的图片 能自动下载并添加到QT资源里 这样就能显示了
能给你的QQ不?
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-9-21 21:31:49 显示全部楼层
Marvelous 发表于 2013-9-21 17:50
我换了另一种方式做了 我发现复制后 粘贴板是能把图片粘贴到qtextedit里的  不能显示的原因是资源里没有这 ...

这么说,你复制的不是图片文件路径本身,而是一个路径。我也是菜鸟,这是我的理解。
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-21 21:43:41 显示全部楼层
Syylc120317 发表于 2013-9-21 21:31
这么说,你复制的不是图片文件路径本身,而是一个路径。我也是菜鸟,这是我的理解。 ...

我要把图片能在Qtextedit中显示 并且是从QQ聊天记录中复制过来  图文混合显示
然后存到数据库中 并且能读取出来 跟原本一样
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-22 19:06:26 显示全部楼层
Syylc120317 发表于 2013-9-20 20:40
嗯,我曾复制聊天记录然后粘贴到word中,能实现你想要的结果。但是我不知道在word中它是怎么识别文字和图 ...

唉 还在研究 不过看来论坛上也是没人研究过这方面的 分送你了
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-9-23 06:55:51 显示全部楼层
Marvelous 发表于 2013-9-22 19:06
唉 还在研究 不过看来论坛上也是没人研究过这方面的 分送你了

如果你研究出来的话,可不可以分享一下你的经验,思路也行。
回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2013-9-28 20:59:52 显示全部楼层
Marvelous 发表于 2013-9-22 19:06
唉 还在研究 不过看来论坛上也是没人研究过这方面的 分送你了

这个需要下载图的,然后在textEdit上显示出来。

你要保存到数据库里面吗?一般数据库只保存文本的,就算保存图片也是保存图片的存放路径而已。
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-29 21:40:12 显示全部楼层
yafeilinux 发表于 2013-9-28 20:59
这个需要下载图的,然后在textEdit上显示出来。

你要保存到数据库里面吗?一般数据库只保存文本的,就算 ...

我是从QQ聊天记录里粘贴到QTextedit里  正常的说我要重写粘贴事件 把QClipboard里的图片下载到本地 但是QClipboard.image 只有一张图片 如果我复制多张图片+文字  QClipboard.image就不能用了
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-29 21:41:07 显示全部楼层
yafeilinux 发表于 2013-9-28 20:59
这个需要下载图的,然后在textEdit上显示出来。

你要保存到数据库里面吗?一般数据库只保存文本的,就算 ...

保存存放路径也是没问题的 我以我自己机子为服务器存放就好了 问题是怎么把每个图片还原到原本的位置给用户看
回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2013-9-29 23:06:52 显示全部楼层
Marvelous 发表于 2013-9-29 21:41
保存存放路径也是没问题的 我以我自己机子为服务器存放就好了 问题是怎么把每个图片还原到原本的位置给用 ...

要粘贴哪里的,本地word中的,还是网上的。
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-9-29 23:28:17 显示全部楼层
yafeilinux 发表于 2013-9-29 23:06
要粘贴哪里的,本地word中的,还是网上的。

复制qq的聊天记录(图文混合  会有多个图片的情况)  粘贴到qtextedit里  显示复制时的文本原貌并且上传到数据库  下次读取出来和原本是一模一样

主要就是图片不知道怎么处理 其他都好解决
回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2013-9-30 11:20:54 显示全部楼层
Marvelous 发表于 2013-9-29 23:28
复制qq的聊天记录(图文混合  会有多个图片的情况)  粘贴到qtextedit里  显示复制时的文本原貌并且上传到 ...

这个图片一定得存放到本地,然后在数据库里面只存放路径。

数据库放在那里,是本地的吗? 这个可以类比下网站搭建,网站的数据库里面放到全是文本的内容,图片是分开存放的,但是位置需要固定,不然以后没有办法显示出来了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了