破解软件

破解软件,破解密码,破解工具,破解论坛,破解技术

qml实现qq聊天记录(聊天记录 )

本文目录一览:

如何在QML文件里,以模态的方式打开别一个QM

模态窗体已经成为Web开发人员设计界面时经常要使用的传输数据的方式。通过模态窗口,可以提高网站的可用性。正好项目的需要,有个客户想要模态弹出的窗体来提交网站的反馈,经过一番测试实现了,我使用jQuery fancybox插件来创建一个漂亮的模态窗体,提交表单的数据在服务器端实现Ajax调用。你可以在你的邮件里收到用户发送的反馈消息

html代码

header部分主要的JS文件如下引入jquery代码和fancybox代码

复制代码 代码如下:

script type="text/javascript" src=""/script

script type="text/javascript" src="fancybox/jquery.fancybox.js?v=2.0.6"/script

演示

首先,从官网下载最新的Fancybox,并解压缩。核心的HTML页面代码是非常简单的,这里有一个隐藏的DIV,当用户单击href链接时候,打开一个模态窗口。

复制代码 代码如下:

div id="wrapper"

Send us feedback from the modal window.

a class="modalbox" href="#inline"有本事你点我/a/div

!-- hidden inline form --

div id="inline"

h2发送消息给我们/h2

form id="contact" action="#" method="post" name="contact"label for="email"你的邮件/label

input id="email" class="txt" type="email" name="email" /

label for="msg"你想要对我们说/label

textarea id="msg" class="txtarea" name="msg"/textarea

button id="send"立即发送/button/form/div

CSS样式表

设置文本框的颜色,大小,获得焦点下的样式等等,使用:hover和:active 来显示状态。

复制代码 代码如下:

.txt {

display: inline-block;

color: #676767;

width: 420px;

font-family: Arial, Tahoma, sans-serif;

margin-bottom: 10px;

border: 1px dotted #ccc;

padding: 5px 9px;

font-size: 1.2em;

line-height: 1.4em;

}

.txtarea {

display: block;

resize: none;

color: #676767;

font-family: Arial, Tahoma, sans-serif;

margin-bottom: 10px;

width: 500px;

height: 150px;

border: 1px dotted #ccc;

padding: 5px 9px;

font-size: 1.2em;

line-height: 1.4em;

}

.txt:focus,

.txtarea:focus {

border-style: solid;

border-color: #bababa;

color: #444;

}

input.error,

textarea.error {

border-color: #973d3d;

border-style: solid;

background: #f0bebe;

color: #a35959;

}

input.error:focus,

textarea.error:focus {

border-color: #973d3d;

color: #a35959;

}

我定义了一个错误的css类,结合jquery用来检测用户输入的数据是否正确,输入错误数据会使字段文字,边框和背景变成深色。直到用户输入有效的数据字段颜色将恢复正常。

复制代码 代码如下:

#send {

color: #dee5f0;

display: block;

cursor: pointer;

padding: 5px 11px;

font-size: 1.2em;

border: solid 1px #224983;

border-radius: 5px;

background: #1e4c99;

background: -webkit-gradient(linear, left top, left bottom, from(#2f52b7), to(#0e3a7d));

background: -moz-linear-gradient(top, #2f52b7, #0e3a7d);

background: -webkit-linear-gradient(top, #2f52b7, #0e3a7d);

background: -o-linear-gradient(top, #2f52b7, #0e3a7d);

background: -ms-linear-gradient(top, #2f52b7, #0e3a7d);

background: linear-gradient(top, #2f52b7, #0e3a7d);

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2f52b7', endColorstr='#0e3a7d');

}

#send:hover {

background: #183d80;

background: -webkit-gradient(linear, left top, left bottom, from(#284f9d), to(#0c2b6b));

background: -moz-linear-gradient(top, #284f9d, #0c2b6b);

background: -webkit-linear-gradient(top, #284f9d, #0c2b6b);

background: -o-linear-gradient(top, #284f9d, #0c2b6b);

background: -ms-linear-gradient(top, #284f9d, #0c2b6b);

background: linear-gradient(top, #284f9d, #0c2b6b);

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#284f9d', endColorstr='#0c2b6b');

}

#send:active {

color: #8c9dc0;

background: -webkit-gradient(linear, left top, left bottom, from(#0e387d), to(#2f55b7));

background: -moz-linear-gradient(top, #0e387d, #2f55b7);

background: -webkit-linear-gradient(top, #0e387d, #2f55b7);

background: -o-linear-gradient(top, #0e387d, #2f55b7);

background: -ms-linear-gradient(top, #0e387d, #2f55b7);

background: linear-gradient(top, #0e387d, #2f55b7);

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0e387d', endColorstr='#2f55b7');

}

CSS 按钮我使用 CSS3来创建线型渐变,代码如上

使用 Fancybox

页面加载元素完成之后,调用Fancybox默认代码

复制代码 代码如下:

$(document).ready(function() {

$(".modalbox").fancybox();

$("#contact").submit(function() { return false; });//禁用默认的窗体提交

代码的第二行禁用默认的联系人表单提交动作。为什么呢?因此这样我们可以处理自己的单击事件,并通过 Ajax 传递数据。在用户提交表单后,我们需要得到 (电子邮件和消息) 两个字段的当前值。我们还想要检查电子邮件地址是否有效和消息长度是否超过规定的长度值

复制代码 代码如下:

$("#send").on("click", function(){

var emailval = $("#email").val();

var msgval = $("#msg").val();

var msglen = msgval.length;

var mailvalid = validateEmail(emailval);

if(mailvalid == false) {

$("#email").addClass("error");

}

else if(mailvalid == true){

$("#email").removeClass("error");

}

if(msglen 4) {

$("#msg").addClass("error");

}

else if(msglen = 4){

$("#msg").removeClass("error");

}

上面jquery代码使用一些逻辑语句。直到电子邮件有效和消息的长度超过 4 个字母,才会提交表单。

发送Ajax 请求 通过上面的onclick事件,需要将表单数据发送到 PHP。,我们将在我们的收件箱中收到电子邮件。 复制代码 代码如下:

// 如果两个字段验证通过接下来发送消息

//点击发送按钮之后 ,按钮被替换成“发送中”这样的文字提示,目的是为了防止用户在点击提交,提示也更人性化

$("#send").replaceWith("em发送中.../em");

$.ajax({

type: 'POST',

url: 'sendmessage.php',

data: $("#contact").serialize(),

success: function(data) {

if(data == "true") {

$("#contact").fadeOut("fast", function(){

$(this).before("pstrong提交成功! 您的留言已经发送, 谢谢 :)/strong/p");

setTimeout("$.fancybox.close()", 1000);

});

}

}

});

}

});

这里使用serialize(),方法来序列化提交的ajax数据,使得生成标准的URL编码

服务器响应成功之后,隐藏弹出的窗体,并显示一条成功消息。我使用 setTimeout() 方法来关闭 fancybox ,这里我设置一秒钟后隐藏窗体。要执行此操作的 JS 代码是 $.fancybox.close()。

使用 PHP发送邮件 sendmessage.php 接受用户输入的变量。然后调用mail尝试发送它,发送成功返回"true"否则返回false

复制代码 代码如下:

$sendto = "2495371937@qq.com";//定义邮件的接收者

$usermail = $_POST['email'];//获取电子邮件

$content = nl2br($_POST['msg']);//获取消息

$subject = "你有新的消息";

$headers = "来自: " . strip_tags($usermail) . "\r\n";

$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";

$headers .= "MIME-Version: 1.0\r\aan";

$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

$msg = "";

$msg .= "h2 style="font-weight: bold; border-bottom: 1px dotted #ccc;"你有新的消息/h2\r\n";

$msg .= "strong来自:/strong ".$usermail."\r\n";

$msg .= "strong内容:/strong ".$content."\r\n";

$msg .= "";

if(@mail($sendto, $subject, $msg, $headers)) {

echo "true";

} else {

echo "false";

}

演示

我是才开始学习qml,寻求帮助

看qt自带的qt assistant(这是官方帮助文档),最权威。

其中Qt Reference Documentation文档里面有

QML Examples and Demos和QML Elements,都是和qml相关的。

看不懂的,可以百度中文资料,或者到论坛上发问。因为相对中文资料少,最好用谷歌来搜索。

qt自带的源代码里面,有一个examples目录,里面有个declarative目录里都是qml的示例。

QML和C++混合编程实现以下功能:

4个文件 main.qml main.cpp myobj.h myobj.cpp

main.qml:

import QtQuick 2.4

import QtQuick.Window 2.2

import QtQuick.Layouts 1.2

import com.helloc.com 1.0

Window {

visible: true

height: 360

width: 640

Rectangle{

id: bg

anchors.fill: parent

color:"#C6D9F1"

}

ColumnLayout{

anchors.fill: parent

anchors.margins: 20

spacing: 40

Rectangle{

Layout.preferredWidth: 200

Layout.preferredHeight: 40

color:"#8EB4E3"

border.width: 1

border.color: "darkgrey"

Text{

id: title

width: parent.width

text: "混合编程练习"

color: "black"

anchors.verticalCenter: parent.verticalCenter

horizontalAlignment: Text.AlignHCenter

}

}

Rectangle{

id: rec

Layout.preferredWidth: parent.width * 0.8

Layout.fillHeight: true

Layout.alignment: Qt.AlignHCenter

color:obj.color

MyObj{

id: obj

}

}

RowLayout{

Layout.preferredWidth: parent.width * 0.9

Layout.preferredHeight: 40

spacing: 40

Rectangle{

Layout.preferredHeight: 40

Layout.fillWidth: true

color:"#8EB4E3"

Text{

anchors.centerIn: parent

text: "红"

}

MouseArea{

anchors.fill: parent

onClicked:{

obj.setMyColor(MyObj.MyRed)

}

}

}

Rectangle{

Layout.preferredHeight: 40

Layout.fillWidth: true

color:"#8EB4E3"

Text{

anchors.centerIn: parent

text: "黄"

}

MouseArea{

anchors.fill: parent

onClicked:{

obj.setMyColor(MyObj.MyYellow)

}

}

}

Rectangle{

Layout.preferredHeight: 40

Layout.fillWidth: true

color:"#8EB4E3"

Text{

anchors.centerIn: parent

text: "蓝"

}

MouseArea{

anchors.fill: parent

onClicked:{

obj.color = "blue"

}

}

}

Rectangle{

Layout.preferredHeight: 40

Layout.fillWidth: true

color:"#8EB4E3"

Text{

anchors.centerIn: parent

text: "绿"

}

MouseArea{

anchors.fill: parent

onClicked:{

obj.color = "green"

}

}

}

}

}

}

main.cpp:

#include QGuiApplication

#include QQmlApplicationEngine

#include QtQml

#include "myobj.h"

int main(int argc, char *argv[])

{

QGuiApplication app(argc, argv);

qmlRegisterTypeMyObj("com.helloc.com", 1, 0, "MyObj");

QQmlApplicationEngine engine;

engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

return app.exec();

}

myobj.h:

#ifndef MYOBJ_H

#define MYOBJ_H

#include QObject

#include QColor

class MyObj : public QObject

{

Q_OBJECT

Q_ENUMS(MyColor)

Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY myColorChanged)

public:

explicit MyObj(QObject *parent = 0);

enum MyColor{

MyRed = Qt::red,

MyYellow = Qt::yellow,

MyBlue = Qt::blue,

MyGreen = Qt::green,

};

QColor color();

void setColor(QColor color);

Q_INVOKABLE void setMyColor(MyColor myColor);

signals:

void myColorChanged(QColor color);

public slots:

private:

QColor m_color;

};

#endif // MYOBJ_H

myobj.cpp:

#include "myobj.h"

#include QDebug

MyObj::MyObj(QObject *parent) :

QObject(parent),

m_color(QColor("yellow"))

{

}

QColor MyObj::color()

{

return m_color;

}

void MyObj::setColor(QColor color)

{

if(m_color != color){

m_color = color;

emit myColorChanged(color);

}

}

void MyObj::setMyColor(MyColor myColor)

{

this-setColor(QColor(Qt::GlobalColor(myColor)));

}

C++里 枚举的使用 不是很熟练 Color属性的设置若有见解,望指出.//本人环境Qt 5.5

QT实现360电脑管家类似界面

要实现这个界面是相当简单地。无外乎就是用QLabel加载一些图片,通过style sheet设置一下QPushButton的背景图片,然后实现一些动画效果,再整合之后显示到界面上而已。

基本上用QWidget和样式表(style sheet)就能实现你的要求了,不过前提是你必须能弄到这些图片资源,如果没有就需要你自己找人帮你做这些图片了。

如果你觉得用QWidget实现的效果不够拉风。那么你可以考虑一下用QML去实现这些界面。不过要用QML你就需要好好学习一下QML了。qt4.7之后的版本提供了QML。QML有得你看的了,加油吧。同学。

  • 评论列表:
  •  鸽吻揽月
     发布于 2022-09-21 23:13:24  回复该评论
  • c, argv); qmlRegisterTypeMyObj("com.helloc.com", 1, 0, "MyObj"); QQmlApplicationEngine engine;

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.