美文网首页
Qt模仿QQ聊天窗口界面(三)- 截图

Qt模仿QQ聊天窗口界面(三)- 截图

作者: 雨田哥工作号 | 来源:发表于2018-11-01 19:40 被阅读0次

简述

此篇在原来的基础上增加了QQ截图功能。在一个大佬的基础上进行了二次开发。
参考链接:Dharkael
相关博客:
Qt模仿QQ聊天窗口界面(一)
Qt模仿QQ聊天窗口界面(二)

效果图

这里写图片描述 这里写图片描述 这里写图片描述 这里写图片描述 这里写图片描述 这里写图片描述 这里写图片描述

代码篇

//这里代码太多,我就不贴出来了,有需要的盆友
//可以加我QQ:雨田哥-工作号:3246214072
//放大镜部分代码
void AmplifierWidget::paintEvent(QPaintEvent *event)
{
    __super::paintEvent(event);
    QPainter painter(this);
    painter.setRenderHint(QPainter::SmoothPixmapTransform);
    //绘制放大镜图片
    painter.drawPixmap(6, 6, 120, 88, m_pixmap.scaled(120, 88));
    //绘制背景图
    painter.drawPixmap(0, 0, width(), height(), QPixmap(":/TalkWindowShell/Resources/screenImg/Magnifier.png"));
    painter.setPen(Qt::white);
    QFont font = painter.font();
    font.setPixelSize(12);
    painter.setFont(font);
    //绘制选择框大小
    painter.drawText(6, 98, 120, 16, Qt::AlignLeft, QString("%1x%2").arg(m_selection.width()).arg(m_selection.height()));
    
    QColor pixcolor = m_pixmap.toImage().pixel(m_pixmap.width() / 2, m_pixmap.height() / 2);
    //绘制中心RGB颜色
    painter.drawText(6, 112, 120, 16, Qt::AlignLeft, QString("rgb(%1,%2,%3)").arg(pixcolor.red()).arg(pixcolor.green()).arg(pixcolor.blue()));
}

void AmplifierWidget::setAmplifierWidgetPixmap(const QPixmap& pixmap, QRect selection)
{
    m_pixmap = pixmap;
    m_selection = selection;
    update();
}

//颜色选择部分代码
void QColorPicker::initControl()
{
    m_thickness = 1;
    m_curColor = "rgb(255, 0, 0)";

    ui.color1->setProperty("color",  "rgb(0, 0, 0)");
    ui.color2->setProperty("color",  "rgb(170, 0, 0)");
    ui.color3->setProperty("color",  "rgb(85, 170, 255)");
    ui.color4->setProperty("color",  "rgb(200, 200, 200)");
    ui.color5->setProperty("color",  "rgb(170, 0, 127)");
    ui.color6->setProperty("color",  "rgb(0, 85, 127)");
    ui.color7->setProperty("color",  "rgb(170, 170, 127)");
    ui.color8->setProperty("color",  "rgb(130, 149, 46)");
    ui.color9->setProperty("color",  "rgb(170, 0, 255)");
    ui.color10->setProperty("color", "rgb(255, 0, 0)");
    ui.color11->setProperty("color", "rgb(255, 170, 0)");
    ui.color12->setProperty("color", "rgb(255, 129, 19)");
    ui.color13->setProperty("color", "rgb(255, 170, 255)");
    ui.color14->setProperty("color", "rgb(157, 127, 157)");
    ui.color15->setProperty("color", "rgb(255, 85, 0)");
    ui.color16->setProperty("color", "rgb(85, 170, 127)");

    connect(ui.color1,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color2,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color3,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color4,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color5,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color6,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color7,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color8,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color9,  &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color10, &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color11, &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color12, &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color13, &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color14, &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color15, &QPushButton::clicked, this, &QColorPicker::onColorClicked);
    connect(ui.color16, &QPushButton::clicked, this, &QColorPicker::onColorClicked);

    QButtonGroup* btnGroup = new QButtonGroup(this);
    ui.minBtn->setChecked(true);
    btnGroup->addButton(ui.minBtn);
    btnGroup->addButton(ui.midBtn);
    btnGroup->addButton(ui.largeBtn);

    connect(ui.minBtn, &QPushButton::clicked, this, &QColorPicker::onThicknessClicked);
    connect(ui.midBtn, &QPushButton::clicked, this, &QColorPicker::onThicknessClicked);
    connect(ui.largeBtn, &QPushButton::clicked, this, &QColorPicker::onThicknessClicked);
}

void QColorPicker::onColorClicked()
{
    QString btnColor = sender()->property("color").toString();
    m_curColor = btnColor;
    ui.color->setStyleSheet(QString("QPushButton{border:none;background-color: %1;}").arg(btnColor));
}

void QColorPicker::onThicknessClicked()
{
    QString btnName = sender()->objectName();
    if (btnName == "minBtn")
    {
        m_thickness = 1;
    }
    else if (btnName == "midBtn")
    {
        m_thickness = 4;
    }
    else if (btnName == "largeBtn")
    {
        m_thickness = 8;
    }
}

QColor QColorPicker::drawColor()
{
    return QColor(ColorMap::colormap.value(m_curColor));
}

int QColorPicker::thickNess()
{
    return m_thickness;
}

void QColorPicker::paintEvent(QPaintEvent *event)
{
    __super::paintEvent(event);
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

后期规划

Qt模仿QQ聊天窗口界面(四)
1.增加聊天窗口气泡消息功能

工程文件

Qt交流大会 853086607 免费群中


在这里插入图片描述

结尾

不定期上传新作品,解答群中作品相关问题。相关外,能解答则解答。欢迎大家一起探索Qt世界!

相关文章

  • Qt模仿QQ聊天窗口界面(三)- 截图

    简述 此篇在原来的基础上增加了QQ截图功能。在一个大佬的基础上进行了二次开发。参考链接:Dharkael相关博客:...

  • Qt模仿QQ聊天窗口界面(二)

    简述 在上篇我们已经搭好了QQ聊天窗口的框架,这里在原来的基础上叠加功能,以及优化一些控件。 修改 1.优化表情窗...

  • Qt模仿QQ聊天窗口界面(一)

    简述 最近利用业余时间,模仿QQ做了一个聊天窗口界面,功能还不全,准备分几个部分做出来,还是看空闲时间了,以及广大...

  • Tim与qq的区别

    界面:tim界面相较于qq简洁。 1. qq聊天窗口与软件主体分开,tim聊天窗口在主体内部。 2. qq可以更改...

  • Qt之模仿QQ主面板界面

    效果图 这里大家值得注意的是,QQ等级设置,已经列表展开搜索时的三角符的旋转效果 工程文件 Qt交流大会 8530...

  • qt 入门第一天

    qt入门 label 建立连接 窗口的布局 这个界面由三个窗口部件组成分别是:QSpingBox,QSpinBOX...

  • 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发

    QQ_Chat 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具。(内含报告) ...

  • 5.26跃评运营晚报

    QQ 8.0.5 iOS版更新:支持聊天消息界面长截图 昨日,QQ推送了iOS版的8.0.5版本更新。新版本迎来了...

  • pycharm 打开交互式ipython窗口的三种方法

    在cmd命令行窗口直接输入ipython,得到如下界面 如果想要独立式的QT窗口,可以先点击当面窗口名称旁边的那个...

  • PC史上最有趣的 QQ8.8

    QQ8.8体验版更新日志: - 全新视觉,简约界面乐享沟通 - 集成式聊天窗口,新消息一目了然 - QQ面板新增游...

网友评论

      本文标题:Qt模仿QQ聊天窗口界面(三)- 截图

      本文链接:https://www.haomeiwen.com/subject/xnffxqtx.html