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

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

    • 简述
    • 效果图
    • 代码篇
    • 后期规划
    • 结尾

简述

此篇在原来的基础上增加了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模仿QQ聊天窗口界面(三)相关推荐

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

    Qt模仿QQ聊天窗口界面(二) Qt模仿QQ聊天窗口界面(二) 简述 修改 效果图 后期规划 代码 结尾 简述 在上篇我们已经搭好了QQ聊天窗口的框架,这里在原来的基础上叠加功能,以及优化一些控件. ...

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

    Qt模仿QQ聊天窗口界面(一) Qt模仿QQ聊天窗口界面(一) 简述 效果图 QQ的聊天窗口 我做的效果图 代码篇 结尾 简述 最近利用业余时间,模仿QQ做了一个聊天窗口界面,功能还不全,准备分几个部 ...

  3. Qt模仿QQ聊天窗口(四)

    Qt模仿QQ聊天窗口-气泡聊天消息 Qt模仿QQ聊天窗口-气泡聊天消息 简述 效果图 相关博客 代码 结尾 简述 最近感冒了,头疼,头疼,头疼.好了,进入正题吧,基本的气泡消息展示做好了,支持图文混排 ...

  4. Qt模仿QQ登录界面(一)

    这两天研究qt,练习时做了个仿QQ登录界面,我这次实现的比较简单,先在这里记录一下,以后有空了会继续完善的. (一)效果图 这里使用我的qq号测试的如图: (二)工程文件 (三)代码实现 mainwi ...

  5. Qt模仿QQ聊天窗口合并功能

    模拟qq打开聊天窗口,打开多个聊天窗口时,窗口合并 效果图如下: 实现机制 聊天窗口放在QStackedWidget里管理,聊天条目放在QLIstWidget管理,通过QListWidget的item ...

  6. Qt 之 模仿 QQ登陆界面——功能篇(一)

    一.简述 今天是2017年第一篇技术文章,12月末事情太多,一直没来得及更新博客.今天继 Qt 之 模仿 QQ登陆界面--样式篇 这一篇 来简单地看一下对登录界面做的一些功能,主要是登录用户下拉列表和 ...

  7. pyqt5登录界面设计——模仿qq登录界面,可登录注册(数据库)

    pyqt5登录界面设计--模仿qq登录界面 一.简单易用的可直接登录的界面--账号密码程序写死 1.1.效果图: 1.2.视频效果图 3.代码说明 4.使用示例 5.全部源码见: 二.带数据库的可登录 ...

  8. Qt 之 模仿 QQ登陆界面——旋转窗口篇

    #一.简述 今天是新的一年第一篇博客,有大半个月没有更新博客了.我想是时候,打开电脑.拿起键盘.开始在我的代码之路上披荆斩棘,斩杀恶龙. 今天就继续来分享QQ登录界面的那些事.QQ登录界面的标题栏有一 ...

  9. java代码完全手写模仿qq登录界面

    这是我模仿QQ2015版界面,实现的基本功能有登陆验证,重置等,当然直接复制代码运行是不一样的,还要注意自己插入自己的图片. 结果截图如下所示: import java.awt.BorderLayou ...

最新文章

  1. abb变频器电机过热保护怎么复位_变频器驱动的电机过热该怎么办
  2. Boost Part III. 函数对象与高级编程 Library 10. Lambda 用法
  3. java文件名特殊字符_Java 8:用名字读取特殊字符的文件
  4. Prime Count 求大区间素数个数
  5. 这些年Android面试的那些套路,社招面试心得
  6. Android input keyevent
  7. 用户名错误则一直登录
  8. C++_homework_StackSort
  9. js 对象数组追加元素
  10. CentOS 7 yum安装Tomcat7-jenkins
  11. Moodle中的session用法
  12. 帝国cms模板 php代码 效率,帝国cms模板开发常用技巧总结
  13. 傅里叶级数与傅里叶变换_Part4_傅里叶级数的复数形式
  14. 团队管理14--盘点团队
  15. 马云有自己的银行,为什么还要贷款?
  16. 数字战疫|央视聚焦闵行,有信云助力上海数千家企业复工复产
  17. .Net Core 简单的Hangfire部署Demo
  18. [附源码]计算机毕业设计springboot小太阳幼儿园学生管理系统
  19. 大数据相关职位的知识储备与系统学习路线规划以及所需时间
  20. 网站识别Windows AD 域账号,并自动登录

热门文章

  1. 物理专业出身的Flash业余爱好者喜获Adobe Flash开发大赛一等奖
  2. 【OpenCV图像处理13】图像拼接
  3. 【玩狼人杀感悟】海康威视实习第四周总结
  4. 计算机专业的毕设应该怎么做?
  5. 51单片机 (八)中断系统
  6. 2021年初级会计职称考试《初级会计实务》考试题库
  7. 电脑的计算机无法启动怎么办,电脑无法启动怎么办
  8. svn: generic failure 错误解决方法
  9. 智能手机 3D 视觉之战:苹果不再一枝独秀,Android 全面崛起
  10. EPLAN_3D propanel 的粗略使用方式