QT 模块

本文详细介绍了QT库中的关键模块,包括拖放操作和剪切板、网络、多线程、数据库、界面风格、视图/模型、脚本、webkit与多媒体的使用。通过示例代码展示了如何实现拖放操作、FTP网络通信、HTTP文件上传和下载,以及QWebView的使用。同时,提到了数据库连接、界面风格定制和多线程操作。
摘要由CSDN通过智能技术生成

目录

1. 拖放操作和剪切板 2

2. 网络 6

3. 多线程 11

4. 数据库 11

5. 界面风格 12

6. 视图/模型 12

7. 脚本 12

8. webkit与多媒体 12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. 拖放操作和剪切板

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

 

#include <QMainWindow>

#include <QDrag>

#include <QDropEvent>

#include <QMouseEvent>

#include <QLineEdit>

#include <QResizeEvent>

 

 

#pragma pack(1)

struct ST_INFO

{

    bool b;

    int  i;

};

#pragma pack()

 

class MainWindow : public QMainWindow

{

    Q_OBJECT

 

public:

    MainWindow(QWidget *parent = 0);

    ~MainWindow();

 

    QPointF         m_pntPress;

    bool            m_bMimeAdded;

    QLineEdit     * m_pText1;

    QLineEdit     * m_pText2;

    QLineEdit     * m_pText3;

 

protected:

    void    mousePressEvent(QMouseEvent *);

    void    mouseMoveEvent(QMouseEvent *);

    void    dropEvent(QDropEvent *);

    void    dragEnterEvent(QDragEnterEvent *);

    void    dragMoveEvent(QDragMoveEvent *);

    void    resizeEvent(QResizeEvent *);

};

 

#endif // MAINWINDOW_H

 

#include "mainwindow.h"

#include <QApplication>

#include <QMimeData>

#include <QDebug>

#include <QTextStream>

 

MainWindow::MainWindow(QWidget *parent)

    : QMainWindow(parent)

{

    setAcceptDrops(true);

    m_pText1 = new QLineEdit(this);

    m_pText2 = new QLineEdit(this);

    m_pText3 = new QLineEdit(this);

}

 

MainWindow::~MainWindow()

{

    delete m_pText1;

    delete m_pText2;

    delete m_pText3;

}

 

void MainWindow::mouseMoveEvent(QMouseEvent *event)

{

    if ((QLineF(event->screenPos(), m_pntPress)

        .length() < QApplication::startDragDistance()) || m_bMimeAdded)

    {

        return;

    }

 

    m_bMimeAdded = true;

    QDrag *drag = new QDrag(this);

    QMimeData *mime = new QMimeData;

    drag->setMimeData(mime);

 

    QImage image("E:\\lena.jpg");

 

    drag->setPixmap(QPixmap::fromImage(image).scaled(30, 40));

    drag->setHotSpot(QPoint(15, 30));

 

    QByteArray qba;

 

    QString qstrTemp1 = m_pText1->text();

    QString qstrTemp2 = m_pText2->text();

    bool bTemp;

    if(qstrTemp1.contains("true"))

    {

        bTemp = true;

    }

    else

    {

        bTemp = false;

    }

    ST_INFO stTemp = { bTemp, qstrTemp2.toInt()};

    qba.resize(sizeof(stTemp));

    memcpy(qba.data(), &stTemp, sizeof(stTemp));

    mime->setData(tr("INFO"), qba);

 

 

    drag->exec();

}

 

void MainWindow::mousePressEvent(QMouseEvent *e)

{

    m_pntPress = e->screenPos();

    m_bMimeAdded = false;

}

 

void MainWindow::dropEvent(QDropEvent *event)

{

    MainWindow *source = qobject_cast<MainWindow *>(event->source());

    if(source != this)

    {

        if (event->mimeData()->hasFormat("INFO"))

        {

            QByteArray pieceData = event->mimeData()->data("INFO");

 

            ST_INFO stTemp;

 

            memcpy(&stTemp, pieceData.data(), sizeof(stTemp));

 

            QString qstrTemp;

            QTextStream stream(&qstrTemp, QIODevice::WriteOnly);

            stream<<"b = "<<stTemp.b<<" i = "<<stTemp.i;

            m_pText3->setText(qstrTemp);

            event->setDropAction(Qt::MoveAction);

            event->accept();

        }

        else

        {

            event->ignore();

        }

    }

    else

    {

        event->ignore();

    }

}

 

void MainWindow::dragEnterEvent(QDragEnterEvent *event)

{

    if (event->mimeData()->hasFormat("INFO"))

        event->accept();

    else

        event->ignore();

}

 

void MainWindow::dragMoveEvent(QDragMoveEvent *event)

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值