北京通信管理局网站备案处启迪设计集团股份有限公司
web/
2025/10/4 10:02:15/
文章来源:
北京通信管理局网站备案处,启迪设计集团股份有限公司,江苏省建设工程注册中心网站,永久免费的网站服务器有哪些软件QT——tableWidget-跳变之舞V1.0-记录学习【1】 文章目录 QT——tableWidget-跳变之舞V1.0-记录学习【1】前言一、利用QT创建项目文件1.1 完整项目文件如下图所示:1.2 演示#xff1a; 二、声明文件#xff1a;2.1 主界面声明文件:mainwindow.h#xff1b;2.2 控制窗口声明文…QT——tableWidget-跳变之舞V1.0-记录学习【1】 文章目录 QT——tableWidget-跳变之舞V1.0-记录学习【1】前言一、利用QT创建项目文件1.1 完整项目文件如下图所示:1.2 演示 二、声明文件2.1 主界面声明文件:mainwindow.h2.2 控制窗口声明文件:form.h2.3 线程声明文件:mythread.h 三、源文件业务逻辑实现3.1 主界面逻辑文件:mainwindow.cpp3.2 控制窗口逻辑文件:form.cpp3.3 线程逻辑文件:mythread.cpp3.4 主界面监控及显示:main.cpp 四、UI设计文件4.1 控制窗口UI文件form.ui4.2 主界面UI文件mainwindow.ui 五、qrc资源文件六、个人初步理解QT信号与槽函数的建立及通讯演示 前言
学习QT-tableWidge的部分使用方法自制跳变表格娱乐小工具 V1.0(*︶) 一、利用QT创建项目文件
备注此处不讲解如何新建项目创建项目。
1.1 完整项目文件如下图所示: Headers文件夹下的文件为头文件主要是声明定义文件Sources文件夹下的文件为源文件主要是功能实现文件Forms文件夹下的文件为ui文件主要是UI设计文件Resources文件夹下的文件为qrc文件主要是放入资源文件Other files文件夹下的文件为其他文件 1.2 演示 二、声明文件 包括主界面声明文件:mainwindow.h控制窗口声明文件:form.h线程声明文件:mythread.h; 2.1 主界面声明文件:mainwindow.h
//这段代码的作用是防止头文件的重复包含确保在编译过程中每个源文件只包含一次该头文件。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include QMainWindow
#include form.h
#include mythread.h//QT_BEGIN_NAMESPACE是Qt框架中的一个宏定义用于定义一个命名间。
QT_BEGIN_NAMESPACE
//C中命名空间使用namespace来声明并使用{ }来界定命名空间的作用域
namespace Ui { class MainWindow; }
QT_END_NAMESPACE//类
class MainWindow :public QMainWindow //关键字 public 确定了类成员的访问属性。在类对象作用域内公共成员在类的外部是可访问的。
{Q_OBJECT //Q_OBJECT是Qt框架中用于支持信号与槽机制、动态属性和反射等特性的宏定义。public://带有一个参数的构造函数参数类型为QWidget指针参数名为parent。构造函数使用了默认参数值nullptr表示如果没有传递参数则parent将被设置为nullptr。MainWindow(QWidget *parent nullptr);//这是一个默认析构函数没有任何参数。析构函数在对象被销毁时自动调用用于释放对象所占用的资源。~MainWindow();//覆写closeEvent函数void closeEvent(QCloseEvent *);// private slots是Qt框架中的一种特殊声明用于定义私有的槽函数。槽函数是用于响应信号的函数而私有的槽函数只能在类内部被调用。private slots:void onMenuButtonClicked();void getStr(QString ,QString ,QString );private://Ui::MainWindow是一个类通常用于设计和管理主窗口的用户界面。//一个指向MainWindow类的对象的指针Ui::MainWindow *ui;private:Form *configWindow new Form;void onshuju();private:void settable();void addrowcolum(QString ,QString ,QString );private:void returnNumber();void tiaobian();void threadqidong(int value);MyThread *thread new MyThread;//创建信号signals:void mainWidgetStr(QString ,QString );//创建槽函数private slots:void tiaobiansloat(int value);};
#endif // MAINWINDOW_H2.2 控制窗口声明文件:form.h
#ifndef FORM_H
#define FORM_H#include QWidgetnamespace Ui {
class Form;
}class Form : public QWidget
{Q_OBJECTpublic:explicit Form(QWidget *parent nullptr);~Form();private slots:void on_pushButton_clicked();void mainWidgetStr(QString str,QString strs);void on_pushButton_3_clicked();void on_pushButton_2_clicked();private:Ui::Form *si;private:void show_ui();signals:void setStr(QString str,QString strs,QString );
};#endif // FORM_H
2.3 线程声明文件:mythread.h
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include QThreadclass MyThread : public QThread
{Q_OBJECTpublic:explicit MyThread(QObject *parent 0);void stop();void sleeptimeset(int);protected:void run();private:volatile bool stopped;signals:void sendinfo(int);
};#endif // MYTHREAD_H 三、源文件业务逻辑实现 包括主界面逻辑文件:mainwindow.cpp控制窗口逻辑文件:form.cpp线程逻辑文件:mythread.cpp主界面监控:main.cpp; 3.1 主界面逻辑文件:mainwindow.cpp
#include mainwindow.h
#include ui_mainwindow.h
#include iostream //C 语言定义了一些头文件这些头文件包含了程序中必需的或有用的信息
#include form.h
#include qmessagebox.h
#include qevent.h
#include QTableWidget
#include QTableWidgetItem
#include QIcon
#include QDir
#include QDebug
#include QRandomGenerator//using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C 中一个相对新的概念
using namespace std;int ret 1;
int randomNumber0 0;
int randomNumber1 0;
int randomNumber2 0;
int numbers 0;
char a[12] { 0 }; //是一个长度为12的字符数组并且数组中每个元素都被初始化为0。
double decimalNum 0.1;MainWindow::MainWindow(QWidget *parent):QMainWindow(parent),ui(new Ui::MainWindow)//MainWindow::MainWindow(QWidget *parent)构造函数的作用是创建MainWindow类的对象并初始化其UI界面{ui-setupUi(this); //初始化UI// 连接信号和槽//ui-tool是一个指向用户界面中的工具按钮的指针。QAction::triggered是一个信号表示当工具按钮被触发时发出的信号。//this是指向当前窗口对象的指针而MainWindow::onMenuButtonClicked是一个槽函数表示当工具按钮被触发时要执行的函数。connect(ui-tool, QAction::triggered, this, MainWindow::onMenuButtonClicked);/*configWindow为发出信号的对象SIGNAL(setStr(QString))为信号this为接收信号的对象SLOT(getStr(QString))为槽函数。* 意思是当configWindow对象发送setStr信号时this对象的getStr槽函数将被调用并且会传递一个QString类型的参数。* 这种机制使得对象间的通信更加灵活方便。*/connect(configWindow,SIGNAL(setStr(QString,QString ,QString )), this, SLOT(getStr(QString,QString ,QString )));//连接信号和槽函数connect(thread,SIGNAL(sendinfo(int)), this, SLOT(tiaobiansloat(int)));// 设置窗口标题this-setWindowTitle(QT5.1 );this-setWindowIcon((QIcon(:/build-00000-Desktop_Qt_5_14_2_MinGW_64_bit-Release/main.jpg)));settable();//获取坐标// 获取窗口四个角的坐标QRect rect this-geometry(); // 获取窗口位置和大小int x1 rect.x(); // 左上角x坐标int y1 rect.y(); // 左上角y坐标int x2 x1 rect.width(); // 右上角x坐标int y2 y1; // 右上角y坐标
// int x3 x2; // 右下角x坐标
// int y3 y1 rect.height(); // 右下角y坐标
// int x4 x1; // 左下角x坐标
// int y4 y3; // 左下角y坐标qDebug() 右上角x,y坐标:x2 y2 ;this-move(500,250); //窗口打开位置设置
}void MainWindow::onshuju()
{if (ret 0){configWindow-show();cout open new window endl;}else{configWindow-close();cout close new window endl;}}void MainWindow::getStr(QString str,QString strs,QString text)
{qDebug() 主界面接收数据: str strs text;addrowcolum(str,strs,text);//发送信号到控制窗口//emit mainWidgetStr(str,strs);//将字符串转为浮点数decimalNum str.toDouble();//跳变业务逻辑启动控制if(strs start_putton){qDebug() 启动按钮....;threadqidong(1);}else if (strs stop_putton){qDebug() 停止按钮....;threadqidong(2);}}void MainWindow::addrowcolum(QString str1,QString str2,QString text)
{int shuju str2.toInt();if (text 增加 and str1 列设置){for(int shuzhi0;shuzhishuju;shuzhi){int number ui-tableWidget-columnCount();ui-tableWidget-insertColumn(number);}}else if ((text 增加 and str1 行设置)){for(int shuzhi0;shuzhishuju;shuzhi){int number ui-tableWidget-rowCount();ui-tableWidget-insertRow(number);}}else if ((text 删除 and str1 行设置)){for(int shuzhi0;shuzhishuju;shuzhi){int number ui-tableWidget-rowCount();ui-tableWidget-removeRow(number-1);}}else if ((text 删除 and str1 列设置)){for(int shuzhi0;shuzhishuju;shuzhi){int number ui-tableWidget-columnCount();ui-tableWidget-removeColumn(number-1);}}
}void MainWindow::tiaobiansloat(int value)
{// qDebug() 设置睡眠时间 decimalNum;// 设置睡眠时间thread-sleeptimeset(decimalNum*1000);tiaobian();}void MainWindow::threadqidong(int value)
{if (value 1){qDebug() 启动线程...;//启用线程thread-start();}else if(value 2){qDebug() 停止线程...;thread-stop();}
}void MainWindow::tiaobian()
{QTableWidgetItem *item;for(int row 0; row ui-tableWidget-rowCount(); row){for(int column 0; column ui-tableWidget-columnCount(); column){item new QTableWidgetItem();item-setTextAlignment(Qt::AlignCenter); //居中returnNumber();item-setBackground(QColor(randomNumber0, randomNumber1, randomNumber2)); //设置颜色//设置单元格内容item-setText(a);//qDebug() Number: a;ui-tableWidget-setItem(row, column, item);}}
}void MainWindow::onMenuButtonClicked()
{ret 0;cout start Sucess endl;connect(this,SIGNAL(mainWidgetStr(QString,QString )), configWindow, SLOT(mainWidgetStr(QString,QString )));onshuju();ret 1;
}void MainWindow::closeEvent(QCloseEvent *event)
{// 在这里编写关闭窗口时的处理逻辑QMessageBox::StandardButton button QMessageBox::question(this, 确认关闭, 确定要关闭窗口吗, QMessageBox::Yes | QMessageBox::No);if (button QMessageBox::Yes){onshuju();// 用户确认关闭窗口调用父类的closeEvent()函数关闭窗口event-accept();}else {// 用户取消关闭窗口忽略该事件event-ignore();}
}void MainWindow::settable()
{//设置表格表头的样式ui-tableWidget-horizontalHeader()-setStyleSheet(QHeaderView::section{background:lightblue;});ui-tableWidget-resizeColumnsToContents();//自动调整表格控件的列宽使得表格中的内容能够全部显示出来。ui-tableWidget-resizeRowsToContents(); //用于自动调整表格控件的行高使得表格中的内容能够全部显示出来ui-tableWidget-horizontalHeader()-setStretchLastSection(true);//Qt中设置表格控件中表头自适应宽度的方法之一。//水平表头栏的单元格大小模式为拉伸模式即根据控件的大小自动调整每一列的宽度使得每一列的宽度都相等。这种设置可以使得表格数据更加美观和易于查看。ui-tableWidget-horizontalHeader()-setSectionResizeMode(QHeaderView::Stretch);//ui-tableWidget-horizontalHeader()-setSectionResizeMode(0, QHeaderView::ResizeToContents); //将第一列的宽度调整为其内容的宽度。ui-tableWidget-setWordWrap(true);//设置表格控件的自适应行高属性为true//设置所有内容居中QTableWidgetItem *item; //指向QTableWidgetItem对象的指针for(int row 0; row ui-tableWidget-rowCount(); row){for(int column 0; column ui-tableWidget-columnCount(); column){item new QTableWidgetItem();item-setTextAlignment(Qt::AlignCenter); //居中returnNumber();item-setBackground(QColor(randomNumber0, randomNumber1, randomNumber2)); //设置颜色//设置单元格内容item-setText(a);//qDebug() Number: a;ui-tableWidget-setItem(row, column, item);}}// 禁止编辑单元格ui-tableWidget-setEditTriggers(QAbstractItemView::NoEditTriggers);QString path QDir::currentPath();//打印工作路径qDebug() path;//获取表格长度和宽度int width1 ui-tableWidget-width();int height1 ui-tableWidget-height();coutwidth: width1 endl;coutheight: height1 endl;ui-tableWidget-verticalHeader()-setDefaultSectionSize(30); //设置所有行的高度couttable edit over! endl;
}void MainWindow::returnNumber()
{// 生成一个介于0到256之间的随机数randomNumber0 QRandomGenerator::global()-bounded(256);randomNumber1 QRandomGenerator::global()-bounded(256);randomNumber2 QRandomGenerator::global()-bounded(256);// qDebug() Random Number: randomNumber1;// qDebug() Random Number: randomNumber2;numbers QRandomGenerator::global()-bounded(11);//将整数类型的变量numbers格式化成字符串类型然后将格式化后的字符串存储到字符数组a中。//其中第二个参数12表示字符数组a的大小第三个参数%d表示将整数按十进制格式输出到字符串中。//如果格式化后的字符串长度超过了11个字符包括’\0’则会在字符数组a的末尾加上’\0’截断字符串确保不会发生溢出。snprintf(a,12,%d,numbers);}MainWindow::~MainWindow()
{//delete ui; 是一个用于释放动态分配的内存的操作。在C中//当我们使用new关键字创建一个对象时需要使用delete关键字来释放这个对象所占用的内存空间以防止内存泄漏。cout relase neicun endl;delete ui;}
3.2 控制窗口逻辑文件:form.cpp
#include form.h
#include ui_form.h
#include iostream //C 语言定义了一些头文件这些头文件包含了程序中必需的或有用的信息
#include QDebugusing namespace std;/*控制窗口 */Form::Form(QWidget *parent) :QWidget(parent),si(new Ui::Form)
{si-setupUi(this);this-setWindowIcon((QIcon(:/build-00000-Desktop_Qt_5_14_2_MinGW_64_bit-Release/form.jpg)));this-move(1268,250); //窗口打开位置设置this-setWindowTitle(控制窗口 );
}Form::~Form()
{coutclose Form endl;delete si;
}void Form::on_pushButton_clicked(){QString text si-pushButton-text();//获取设置项QString sets si-comboBox_2-currentText();//获取行数据QString a si-comboBox-currentText();//发送信号到主界面emit setStr(sets,a,text);}void Form::mainWidgetStr(QString str,QString strs)
{qDebug() 控制窗口接收数据 strs str;
}void Form::show_ui()
{this-show();}//启动跳变
void Form::on_pushButton_3_clicked()
{QString text si-pushButton_3-text();if (text 启动){QString sets start_putton;//获取跳变速度QString a si-comboBox_3-currentText();//发送信号到主界面emit setStr(a,sets,text);si-pushButton_3-setText(停止);si-pushButton-setDisabled(true);si-pushButton_2-setDisabled(true);}else if (text 停止) {QString sets stop_putton;//获取跳变速度QString a si-comboBox_3-currentText();//发送信号到主界面emit setStr(a,sets,text);si-pushButton_3-setText(启动);si-pushButton-setDisabled(false);si-pushButton_2-setDisabled(false);}}void Form::on_pushButton_2_clicked()
{QString text si-pushButton_2-text();//获取设置项QString sets si-comboBox_2-currentText();//获取行数据QString a si-comboBox-currentText();//发送信号到主界面emit setStr(sets,a,text);
}
3.3 线程逻辑文件:mythread.cpp
#include mythread.hint timeset 200;MyThread::MyThread(QObject *parent) :QThread(parent)
{stopped false;
}void MyThread::run()
{stopped false;int shuju 1;while (!stopped) {QThread::msleep(timeset); // 休眠时间设置;emit sendinfo(shuju);}
}void MyThread::stop()
{stopped true;
}void MyThread::sleeptimeset(int value200)
{timeset value;
}
3.4 主界面监控及显示:main.cpp
#include mainwindow.h
#include form.h
#include QApplication/* QApplication应用程序类管理图形用户界面应用程序的控制流和主要设置。是Qt生命一个程序要确保一直运行就肯定至少得有一个循环这就是Qt主消息循环在其中完成来自窗口系统和其它资源的所有事件消息处理和调度。它也处理应用程序的初始化和结束并且提供对话管理。对于任何一个使用Qt的图形用户界面应用程序都正好存在一个QApplication 对象不论这个应用程序在同一时刻有多少个窗口。*///主界面监控int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w; //继承UIw.show(); //显示界面// 程序进入消息循环等待对用户输入进行响应。这里main()把控制权转交给QtQt完成事件处理工作当应用程序退出的时候exec()的值就会返回。在exec()中Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。return a.exec();
} 四、UI设计文件 包括主界面UI文件mainwindow.ui控制窗口UI文件form.ui 4.1 控制窗口UI文件form.ui
?xml version1.0 encodingUTF-8?
ui version4.0classForm/classwidget classQWidget nameFormproperty namegeometryrectx0/xy0/ywidth392/widthheight214/height/rect/propertyproperty namewindowTitlestringForm/string/propertylayout classQVBoxLayout nameverticalLayoutitemwidget classQGroupBox namegroupBoxproperty nametitlestring控制窗口/string/propertylayout classQGridLayout namegridLayout_2item row0 column4widget classQPushButton namepushButtonproperty nameminimumSizesizewidth0/widthheight25/height/size/propertyproperty namestyleSheetstring notrtrueQPushButton:hover
{
background-color: rgb(30, 144, 255);
}
QPushButton:pressed
{
background-color: #FFFF00; /*伪状态经过时背景色*/
border-style: inset;
}
QPushButton:!enabled{
background-color: rgb(100, 100, 100);
border-style: inset;
}
/string/propertyproperty nametextstring增加/string/property/widget/itemitem row0 column5widget classQPushButton namepushButton_2property nameminimumSizesizewidth0/widthheight25/height/size/propertyproperty namestyleSheetstring notrtrueQPushButton:hover
{
background-color: rgb(30, 144, 255);
}
QPushButton:pressed
{
background-color: #FFFF00; /*伪状态经过时背景色*/
border-style: inset;
}
QPushButton:!enabled{
background-color: rgb(100, 100, 100);
border-style: inset;
}
/string/propertyproperty nametextstring删除/string/property/widget/itemitem row0 column1widget classQComboBox namecomboBox_2property nameminimumSizesizewidth0/widthheight25/height/size/propertyproperty namestyleSheetstring notrtruebackground-color: #F5F5F5;
QComboBox QAbstractItemView::item{
height:36px;
color:#666666;
padding-left:9px;
background-color:#FFFFFF;
}
QComboBox QAbstractItemView::item:hover{ //悬浮
background-color:#409CE1;
color:#ffffff;
}
QComboBox QAbstractItemView::item:selected{//选中
background-color:#409CE1;
color:#ffffff;
}/string/propertyitemproperty nametextstring列设置/string/property/itemitemproperty nametextstring行设置/string/property/item/widget/itemitem row0 column3widget classQComboBox namecomboBoxproperty nameminimumSizesizewidth0/widthheight25/height/size/propertyproperty namestyleSheetstring notrtruebackground-color: #F5F5F5;
QComboBox QAbstractItemView::item{
height:36px;
color:#666666;
padding-left:9px;
background-color:#FFFFFF;
}
QComboBox QAbstractItemView::item:hover{ //悬浮
background-color:#409CE1;
color:#ffffff;
}
QComboBox QAbstractItemView::item:selected{//选中
background-color:#409CE1;
color:#ffffff;
}/string/propertyitemproperty nametextstring1/string/property/itemitemproperty nametextstring2/string/property/itemitemproperty nametextstring3/string/property/item/widget/itemitem row1 column1widget classQLabel namelabelproperty nameminimumSizesizewidth0/widthheight25/height/size/propertyproperty nameframeShapeenumQFrame::Panel/enum/propertyproperty nameframeShadowenumQFrame::Raised/enum/propertyproperty nametextstringlt;htmlgt;lt;head/gt;lt;bodygt;lt;p alignquot;centerquot;gt;跳变速度lt;/pgt;lt;/bodygt;lt;/htmlgt;/string/property/widget/itemitem row1 column4widget classQPushButton namepushButton_3property nameminimumSizesizewidth0/widthheight25/height/size/propertyproperty namestyleSheetstring notrtrueQPushButton:hover
{
background-color: rgb(30, 144, 255);
}
QPushButton:pressed
{
background-color: #FFFF00; /*伪状态经过时背景色*/
border-style: inset;
}
QPushButton:!enabled{
background-color: rgb(100, 100, 100);
border-style: inset;
}
/string/propertyproperty nametextstring启动/string/property/widget/itemitem row1 column3widget classQComboBox namecomboBox_3property nameminimumSizesizewidth0/widthheight25/height/size/propertyproperty namestyleSheetstring notrtruebackground-color: #F5F5F5;
QComboBox QAbstractItemView::item{
height:36px;
color:#666666;
padding-left:9px;
background-color:#FFFFFF;
}
QComboBox QAbstractItemView::item:hover{ //悬浮
background-color:#409CE1;
color:#ffffff;
}
QComboBox QAbstractItemView::item:selected{//选中
background-color:#409CE1;
color:#ffffff;
}/string/propertyitemproperty nametextstring0.2/string/property/itemitemproperty nametextstring0.5/string/property/itemitemproperty nametextstring1/string/property/itemitemproperty nametextstring2/string/property/itemitemproperty nametextstring3/string/property/item/widget/item/layout/widget/item/layout/widgetresources/connections/
/ui
4.2 主界面UI文件mainwindow.ui
?xml version1.0 encodingUTF-8?
ui version4.0classMainWindow/classwidget classQMainWindow nameMainWindowproperty namegeometryrectx0/xy0/ywidth768/widthheight468/height/rect/propertyproperty namewindowTitlestringMainWindow/string/propertywidget classQWidget namecentralwidgetlayout classQGridLayout namegridLayoutitem row0 column0widget classQTableWidget nametableWidgetrowproperty nametextstring0/string/property/rowrowproperty nametextstring1/string/property/rowrowproperty nametextstring3/string/property/rowrowproperty nametextstring4/string/property/rowrowproperty nametextstring5/string/property/rowrowproperty nametextstring6/string/property/rowrowproperty nametextstring7/string/property/rowrowproperty nametextstring8/string/property/rowrowproperty nametextstring9/string/property/rowrowproperty nametextstring10/string/property/rowrowproperty nametextstring11/string/property/rowrowproperty nametextstring12/string/property/rowcolumnproperty nametextstring1/string/property/columncolumnproperty nametextstring2/string/property/columncolumnproperty nametextstring3/string/property/columncolumnproperty nametextstring4/string/property/columncolumnproperty nametextstring5/string/property/columncolumnproperty nametextstring6/string/property/columncolumnproperty nametextstring7/string/property/columnitem row0 column0property nametextstring//propertyproperty nametoolTipstring extracomment123//property/item/widget/item/layout/widgetwidget classQMenuBar namemenubarproperty namegeometryrectx0/xy0/ywidth768/widthheight23/height/rect/propertywidget classQMenu namemenuproperty nametitlestring控制工具/string/propertyaddaction nametool//widgetaddaction namemenu//widgetwidget classQStatusBar namestatusbar/action nametoolproperty nametextstringStart_tool/string/property/action/widgetresources/connections/
/ui 五、qrc资源文件
注明qrc文件基本就是添加图片之类的资源文件设置界面图标背景图片之类的此处不多赘述
六、个人初步理解QT信号与槽函数的建立及通讯
演示 前提可以建立信号和槽函数 1、在1号头文件中先声明一个信号在对应1号源文件中创建一个emit信号 2、在2号头文件中new一个指向1号源文件中类的指针并创建连接信号与槽函数的关系 3、槽函数在2号头文件中先声明然后再在源文件中创建一个槽函数。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86723.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!