QT程序代码

1 篇文章 0 订阅

QT
控件的布局

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QVBoxLayout>

class Widget : public QWidget
{
    Q_OBJECT


public slots:

    void movestr()
    {

        ld1->setText(ld->text());
    }





public:
    Widget(QWidget *parent = nullptr);
    ~Widget();



private:


    QPushButton *pd;
    QLineEdit *ld,*ld1;
    QVBoxLayout *vx;







};
#endif // WIDGET_H

#include "widget.h"
#include "./ui_widget.h"

Widget::Widget(QWidget *parent)

{

    pd=new QPushButton("button",this);
    ld=new QLineEdit(this);
    ld1=new QLineEdit(this);
    pd->setGeometry(0,100,50,50);


    vx=new QVBoxLayout(this);
    vx->addWidget(pd);
    vx->addWidget(ld);
    vx->addWidget(ld1);

    this->setLayout(vx);

   //connect(pd,SIGNAL(click),ld,SLOT(clear));

   connect(pd,SIGNAL(clicked(bool)),this,SLOT(movestr()));

}

Widget::~Widget()
{

}


浏览图片的布局

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>]
#include<QLabel>
#include<QPushButton>
#include<QFileDialog>
#include<QStringList>
#include<QPixmap>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots:
    void openfile(){
        index=0;
        files=QFileDialog::getOpenFileNames();
        QPixmap pix(files[index]);
        lb->setPixmap(pix);


    }

    void showr()
    {
        if(index+1<files.length())
            index++;
        else
            index=0;

        QPixmap pix(files[index]);
        lb->setPixmap(pix);
    }

    void showl()
    {
        if(index-1>0)
            index--;
        else
            index=files.length()-1;
        QPixmap pix(files[index]);
        lb->setPixmap(pix);
    }



private:

    QLabel *lb;
    QPushButton *pb1,*pb2,*pb3;
    QStringList files;
    int index;
};
#endif // WIDGET_H

#include "widget.h"
#include<QHBoxLayout>
#include<QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    lb=new QLabel;
    lb->setMinimumSize(640,480);
    lb->setScaledContents(true); //设置图片自适应控件大小


    pb1=new QPushButton("<");
    pb2=new QPushButton("show");
    pb3=new QPushButton(">");

    QHBoxLayout *hbox=new QHBoxLayout;
    hbox->addStretch();
    hbox->addWidget(pb1);
    hbox->addWidget(pb2);
    hbox->addWidget(pb3);
    hbox->addStretch();

    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(lb);
    vbox->addLayout(hbox);

    this->setLayout(vbox);

    connect(pb2,SIGNAL(clicked(int)),this,SLOT(openfile()));
    connect(pb1,SIGNAL(clicked(int)),this,SLOT(showl));
    connect(pb3,SIGNAL(clicked(int)),this,SLOT(showr));



}

Widget::~Widget()
{
}


画笔的使用

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QMouseEvent>
#include<QPainter>
#include<QPixmap>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void mousePressEvent(QMouseEvent *ev){
        startup=ev->pos();
        update();
    }

    void mouseReleaseEvent(QMouseEvent *ev){
        saveeit=true;
        update();
    }

    void  mouseMoveEvent(QMouseEvent *ev)
    {
        endup=ev->pos();
        update();
    }


    void paintEvent(QPaintEvent *ev)

    {

        if(saveeit)
        {
           QPainter px(pix);
           px.drawLine(startup,endup);
        }
        QPainter p(this);
        p.drawPixmap(0,0,*pix);
        p.drawLine(startup,endup);

    }




private:
    QPoint endup;
    QPoint startup;
    QPixmap *pix;
    bool saveeit;

};
#endif // WIDGET_H

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
      pix=new QPixmap;
     pix->fill();
}


Widget::~Widget()
{
}


表盘:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPainter>
#include<QDebug>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();


    void paintEvent(QPaintEvent *ev)
    {
        qDebug()<<"paint.....";
        QPainter p(this);
        p.translate(this->width()/2,this->height()/2);
        p.drawEllipse(QPoint(0,0),100,100);
        p.rotate(i++*10);
        p.drawLine(0,0,50,50);
    }

    void timerEvent(QTimerEvent *event)
    {
        update();
    }

private:
    int i=0;
};
#endif // WIDGET_H

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    i=0;
    startTimer(1000);
}

Widget::~Widget()
{
}


mouse事件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QMouseEvent>
#include<QDebug>
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void mousePressEvent(QMouseEvent *ev)
    {
        qDebug()<<"press ....."<< ev->pos();
    }
    void mouseMoveEvent(QMouseEvent *ev)
    {

        qDebug()<<"move....."<<ev->pos();

    }

    void keyPressEvent(QKeyEvent *ev)
    {
        qDebug()<<"key press...."<<ev->key();

    }

    void wheelEvent(QWheelEvent *ev)
    {
        qDebug()<<"wheel........."<<ev->delta();
    }

    void timerEvent(QTimerEvent *ev)
    {
        qDebug()<<"timer!";
    }
};
#endif // WIDGET_H

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    startTimer(1000);
}

Widget::~Widget()
{
}


窗口:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QAction>
#include<QTextEdit>
#include<QLabel>
#include<QFileDialog>
#include<QColorDialog>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    QAction *openfile;
    QAction *copyfile;
    QAction *phasefile;
    QAction *setcolor;

    QTextEdit *te;
    QLabel *lb;

public slots:
    void openf(){
        QString filename=QFileDialog::getOpenFileName();
        te->setText(filename);


    }

    void copy(){
        te->copy();
    }

    void paste()
    {
        te->paste();

    }

    void setcol()
    {
        QColor ccc=QColorDialog::getColor();
        te->setTextColor(ccc);
    }

};
#endif // MAINWINDOW_H

#include "mainwindow.h"
#include<QMenu>
#include<QMenuBar>
#include<QToolBar>
#include<QStatusBar>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    openfile=new QAction(QIcon("open.jpg"),"open");
    openfile->setShortcut(QKeySequence(tr("Ctrl+P")));


    copyfile=new QAction(QIcon("open.jpg"),"copy");
    phasefile=new QAction(QIcon("open.jpg"),"phase");
    setcolor=new QAction(QIcon("open.jpg"),"set");





     QMenu *fileMenu = menuBar()->addMenu(tr("&file"));
      fileMenu->addAction(openfile);



      QMenu *editMenu=menuBar()->addMenu(tr("&edit"));
      editMenu->addAction(copyfile);
      editMenu->addAction(phasefile);

      QMenu *setMenu=menuBar()->addMenu(tr("&set"));
      setMenu->addAction(setcolor);

      QToolBar *tfile=addToolBar("file");
      tfile->addAction(openfile);

       QToolBar *tedit=addToolBar("edit");
       tedit->addAction(copyfile);
       tedit->addAction(phasefile);


       QToolBar *tset=addToolBar("set");
       tset->addAction(setcolor);


       te=new QTextEdit("hello");
       te->setMaximumSize(240,680);
       setCentralWidget(te);

       lb=new QLabel("1.txt");
       QStatusBar *sb=statusBar();
       sb->addWidget(lb);


       connect(openfile,SIGNAL(triggered(bool)),this,SLOT(openf()));
       connect(copyfile,SIGNAL(triggered(bool)),this,SLOT(copy()));
       connect(phasefile,SIGNAL(triggered(bool)),this,SLOT(paste()));
       connect(setcolor,SIGNAL(triggered(bool)),this,SLOT(setcol()));


}

MainWindow::~MainWindow()
{
}


dailog:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QColorDialog>
#include<QFileDialog>
#include<QFontDialog>
#include<QMessageBox>
#include<QInputDialog>
#include<QErrorMessage>
#include<QProgressDialog>
#include<QDebug>


#include<QPushButton>
#include<QTextEdit>

class Widget : public QWidget
{
    Q_OBJECT
public slots:
    void setcolor(){
        QColor col=QColorDialog::getColor();
        te->setTextColor(col);
    }

    void error(){
        QErrorMessage *e=QErrorMessage::qtHandler();
        e->showMessage("eeeeeeeeeee");
    }

    void showfile(){
        QString filename=QFileDialog::getOpenFileName();
        qDebug()<<filename;
        te->setText(filename);
    }

     void setfond(){
         bool ok;
          QFont font = QFontDialog::getFont(&ok);
          if(ok)

           te->setFont(font);
        }

     void showput(){
          QString text = QInputDialog::getText(this,"xxxx","yyyy");
          te->setText(text);

     }

     void showmsg(){
         QMessageBox::information(this,"aaaaaaa","bbbb","bbbbbbbb");


     }

     void showprog(){
         QProgressDialog *p;
         p->setValue(60);
         p->exec();
     }


public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    QPushButton *cd;
     QPushButton *fd;
     QPushButton *fid;
     QPushButton *mb;
     QPushButton*id;
     QPushButton *em;
     QPushButton *pd;

    QPushButton *pb;
    QTextEdit *te;


};
#endif // WIDGET_H

#include "widget.h"
#include<QVBoxLayout>
#include<QHBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    cd=new  QPushButton("color");
    fd=new  QPushButton("file");
    fid=new  QPushButton("font");
    mb=new  QPushButton("message");
    id=new  QPushButton("input");
    em=new  QPushButton("error");
    pd=new  QPushButton("progress");


    te=new QTextEdit;

    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(cd);
    vbox->addWidget(fd);
    vbox->addWidget(fid);
    vbox->addWidget(mb);
    vbox->addWidget(id);
    vbox->addWidget(em);
    vbox->addWidget(pd);



    QHBoxLayout *hbox=new QHBoxLayout;
    hbox->addLayout(vbox);
    hbox->addWidget(te);
    this->setLayout(hbox);

    connect(cd,SIGNAL(clicked(bool)),this,SLOT(setcolor()));
    connect(em,SIGNAL(clicked(bool)),this,SLOT(error()));
    connect(fd,SIGNAL(clicked(bool)),this,SLOT(showfile()));
    connect(fid,SIGNAL(clicked(bool)),this,SLOT(setfond()));
    connect(id,SIGNAL(clicked(bool)),this,SLOT(showput()));
    connect(mb,SIGNAL(clicked(bool)),this,SLOT(showmsg()));
    connect(pd,SIGNAL(clicked(bool)),this,SLOT(showprog()));

}

Widget::~Widget()
{
}


stackwidget:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QStackedWidget>
#include<QTextEdit>
#include<QComboBox>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    QStackedWidget *sw;
    QTextEdit *te1,*te2,*te3;
    QComboBox *cb;
};
#endif // WIDGET_H

#include "widget.h"
#include<QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    sw=new QStackedWidget;
    te1=new QTextEdit("1234567");
    te2=new QTextEdit("2345678");
    te3=new QTextEdit("22233344");

    sw->addWidget(te1);
    sw->addWidget(te2);
    sw->addWidget(te3);


    QComboBox *cb=new QComboBox;
    cb->addItem("111");
    cb->addItem("222");
    cb->addItem("333");


    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(sw);
    vbox->addWidget(cb);

    this->setLayout(vbox);

    connect(cb,SIGNAL(activatecd),sw,SLOT(setCurrentIndex(int)));



}

Widget::~Widget()
{
}


tablewidget

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QTabWidget>
#include<QTextEdit>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    QTabWidget *td;
    QTextEdit *te1,*te2,*te3;
};
#endif // WIDGET_H

#include "widget.h"
#include<QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    td=new QTabWidget;
    te1=new QTextEdit("1111111111");
    te2=new QTextEdit("222222222222");
    te3=new QTextEdit("333333333");

    td->addTab(te1,"1.c");
    td->addTab(te2,"2.c");
    td->addTab(te3,"3.c");

    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(td);
    this->setLayout(vbox);



}

Widget::~Widget()
{
}


toolbox:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QToolBox>
#include<QPushButton>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    QToolBox *tb;
    QPushButton *pb[3];
};
#endif // WIDGET_H

#include "widget.h"
#include "QVBoxLayout"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    tb=new QToolBox;
    pb[0]=new QPushButton;
    pb[1]=new QPushButton;
    pb[2]=new QPushButton;

    tb->addItem(pb[0],"111");
    tb->addItem(pb[1],"222");
    tb->addItem(pb[2],"333");

    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(tb);
    this->setLayout(vbox);






}

Widget::~Widget()
{
}


lable:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QLabel>
#include<QScrollArea>
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    QLabel *lb;
    QScrollArea *sa;
};
#endif // WIDGET_H

#include "widget.h"
#include<QPixmap>
#include<QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    lb=new QLabel(this);
    QPixmap pix("1.png");
    lb->setPixmap(pix);
    sa=new QScrollArea(this);

    sa->setWidget(lb);

    QVBoxLayout *vbox=new QVBoxLayout(this);
    vbox->addWidget(sa);
    this->setLayout(vbox);

}

Widget::~Widget()
{
}


groupbox:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QGroupBox>
#include<QRadioButton>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    QGroupBox *gb;
    QRadioButton *r1,*r2,*r3;
};
#endif // WIDGET_H
  
#include "widget.h"
#include<QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    gb=new QGroupBox("chioces",this);

    r1=new QRadioButton("r1");
    r2=new QRadioButton("r2");
    r3=new QRadioButton("r3");

    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(r1);
    vbox->addWidget(r2);
    vbox->addWidget(r3);

    gb->setLayout(vbox);

    QVBoxLayout *mainbox=new QVBoxLayout;
    mainbox->addWidget(gb);
    this->setLayout(mainbox);

}

Widget::~Widget()
{
}


input-output

#ifndef WIDGET_H
#define WIDGET_H


//input 控件
#include <QWidget>
#include<QLineEdit>
#include<QTextEdit>
#include<QComboBox>
#include<QTimeEdit>
#include<QDial>
#include<QSlider>
#include<QScrollBar>


//output  控件
#include<QLabel>
#include<QLCDNumber>
#include<QProgressBar>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();


private:
    QLineEdit *le;
    QTextEdit *te;
    QComboBox  *cb;
    QTimeEdit  *td;
    QDial  *da;
    QSlider *sl;
    QScrollBar  *sb;


    QLabel *lb,*lb1;
    QLCDNumber  *lu;
    QProgressBar *pr;
};
#endif // WIDGET_H

#include "widget.h"
#include <QVBoxLayout>
#include<QHBoxLayout>
#include<QPixmap>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    le=new QLineEdit;
    te=new QTextEdit;
    cb=new QComboBox;
    cb->addItem("read");
    cb->addItem("write");

    td=new QTimeEdit;
    da=new QDial;
    sl=new QSlider;
    sl->setOrientation(Qt::Horizontal);
    sb=new QScrollBar;
    sb->setOrientation(Qt::Horizontal);
    QVBoxLayout *vbox1=new QVBoxLayout;
    vbox1->addWidget(le);
    vbox1->addWidget(te);
    vbox1->addWidget(cb);
    vbox1->addWidget(td);
    vbox1->addWidget(da);
    vbox1->addWidget(sl);
    vbox1->addWidget(sb);
    this->setLayout(vbox1);



    lb=new QLabel("hello");

    lb1=new QLabel;
    QPixmap pix("1.jpg");
    lb1->setFixedSize(222,333);
    lb1->setScaledContents(true);
    lb1->setPixmap(pix);
    lu=new QLCDNumber;
    pr=new QProgressBar;
   QVBoxLayout *vbox2=new QVBoxLayout;
   vbox2->addWidget(lb1);
   vbox2->addWidget(lb);
   vbox2->addWidget(lu);
   vbox2->addWidget(pr);
   this->setLayout(vbox2);

   QHBoxLayout *hbox=new QHBoxLayout;
   hbox->addLayout(vbox1);
   hbox->addLayout(vbox2);
   this->setLayout(hbox);

   connect(da,SIGNAL(valueChange(int)),lu,SLOT(display(int)));
   connect(da,SIGNAL(valueChange(int)),pr,SLOT(setvalue()));


}

Widget::~Widget()
{
}


layouttest:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPushButton>
#include<QLineEdit>


class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    QPushButton *pd;
    QLineEdit *le1,*le2;
};
#endif // WIDGET_H

#include "widget.h"
#include <QVBoxLayout>
#include<QHBoxLayout>
#include<QGridLayout>
#include<QFormLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    pd=new QPushButton("ok",this);
    le1=new QLineEdit(this);
    le2=new QLineEdit(this);

    QVBoxLayout *vbox=new QVBoxLayout;

    QHBoxLayout *hbox=new QHBoxLayout;

    QGridLayout *gbox=new QGridLayout;

    QFormLayout *fbox=new QFormLayout;

    fbox->addRow("user",le1);
    fbox->addRow("passwd",le2);
    fbox->addRow("",pd);
    this->setLayout(fbox);

#if 0
    vbox->addWidget(le1);
    vbox->addWidget(le2);
    vbox->addWidget(pd);

    this->setLayout(vbox);

#endif

#if 0

    hbox->addWidget(le1);
    hbox->addWidget(le2);
    hbox->addWidget(pd);

    this->setLayout(hbox);
#endif

#if 0
    gbox->addWidget(le1,0,0);
    gbox->addWidget(le2,1,1);
    gbox->addWidget(pd,2,2);

    this->setLayout(gbox);


#endif


}

Widget::~Widget()
{
}


button:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPushButton>
#include<QCheckBox>
#include<QLineEdit>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots:
    void setpass(bool flag){
        if(!flag)
            le->setEchoMode(QLineEdit::Password);
        else
            le->setEchoMode(QLineEdit::Normal);
    }

private:
    QPushButton *pb;
    QLineEdit *le;
    QCheckBox *cb;

};
#endif // WIDGET_H

#include "widget.h"
#include<QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    pb=new QPushButton("clear");
    le=new QLineEdit();
   // le->setEchoMode(QLineEdit::Password);
    cb=new QCheckBox("show passwd");

    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(le);
    vbox->addWidget(cb);
    vbox->addWidget(pb);
    this->setLayout(vbox);


    connect(pb,SIGNAL(clicked(bool)),le,SLOT(clear()));
    connect(cb,SIGNAL(clicked(bool)),this,SLOT(setpass(bool)));

}

Widget::~Widget()
{
}


TCP server.h

#ifndef TCPSERVER_H
#define TCPSERVER_H

#include<QObject>
#include<QTcpServer>
class tcpServer : public QObject
{
    Q_OBJECT
public:
    explicit tcpServer(QObject *parent = nullptr);

signals:

public slots:
    void newconnected()
    {
        qDebug()<<"connect";
       clientsock= ser->nextPeddingConnection();
       connect(clientsock,SIGNAL(readyRead()),this,SLOT(readdata()));
    }

    void readdata()
    {
        QByteArray buf=clientsock->readAll();
        qDebug()<<"recv"<<endl;
        clientsock->write(buf);
    }

private:
    QTcpServer *ser;
    QTcpServer *clientsock;

};

#endif // TCPSERVER_H

TCP server.c

#include "tcpserver.h"
#include<QHostAddress>

tcpServer::tcpServer(QObject *parent) : QObject(parent)
{
    ser=new QTcpServer;
    ser->listen(QHostAddress::AnyIPv4,8888);
    connect(ser,SIGNAL(newconnected(),this,SLOT(newconnected())));
    ser->waitForNewConnectiion();
}

main.c

#include <QCoreApplication>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    tcpServer tcpserver;
    tcpserver.init();

    return a.exec();
}

tcp client.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPushButton>
#include<QLineEdit>
#include<QTextEdit>
#include<QTcpSocket>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    
public slots:
    void senddata()
    {
       tcpsocket->write(le->text().toStdString().c_str());
       
    }
    
    void receivedata()
    {
       QByteArry buf=tcpsocket->readAll();
       te->append(buf);
    }

private:
    QPushButton *pb;
    QTextEdit *te;
    QLineEdit *le;
    
    QTcpSocket *tcpsocket;
};
#endif // WIDGET_H

tcp client.cpp

#include "widget.h"
#include<QVBoxLayout>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    
    pb=new QPushButton;
    le=new QLineEdit;
    te=new QTextEdit;
    
    
    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(te);
    vbox->addWidget(le);
    vbox->addWidget(pb);
    
    tcpsocket=new QTcpSocket;
    this->setLayout(vbox);
    
    
    tcpsocket->connecToHost(QHostAddress("192.168.31.134"_,8888));
    connect(pb,SIGNAL(clicked(bool)),this,SLOT(sendata()));
    connect(tcpsocket,SIGNAL(readyRead()),this,SLOT(recivedata()));
    
}

Widget::~Widget()
{
}


udp client

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QLineEdit>
#include<QPushButton>
#include<QTextEdit>
#include<QUdpsocket>           //需要加入 qmake: QT += network
#include<QHostAdderss>
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots:
    void send()
    {
        udpsock->writeDatagram(le->text().toStdString().c_str(),QHostAdderss("192.168.31.134"),8888);

    }

    void recv()
    {
        QByteArray datagram;
        datagram.resize(udpsock->pendingDatagramSize());
        QHostAddress sender;
        quint16 senderPort;
        udpsock->readDatagram(datagram.data(),datagram.size(),&sender,&senderPort);
        te->append(datagram);
    }
private:
    QPushButton *pb;
    QLineEdit *le;
    QTextEdit *te;
    QUdpsocket *udpsock;
};
#endif // WIDGET_H

udp clinet .cpp

#include "widget.h"
#include<QVBoxLayout>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    pb=new QPushButton("button");
    le=new QLineEdit();
    te=new QTextEdit();


    QVBoxLayout *vbox=new QVBoxLayout;
    vbox->addWidget(te);
    vbox->addWidget(le);
    vbox->addWidget(pb);
    udpsock =new QUdpsocket;

    this->setLayout(vbox);

    connect(pb,SIGNAL(clicked(bool)),this,SLOT(send()));
    connect(udpsocket,SIGNAL(readyRead(),this,SLOT(recv())));

}

Widget::~Widget()
{
}


udp server.h

#ifndef UDPSEVER_H
#define UDPSEVER_H

#include<QObject>
#include<QUdpsocket>
class udpSever : public QObject
{
    Q_OBJECT
public:
    explicit udpSever(QObject *parent = nullptr);

    void init()

   {
            udpSocket = new QUdpSocket(this);
            udpSocket->bind(QHostAddress::AnyIpv4, 8888);

            connect(udpSocket, SIGNAL(readyRead),
                    this, SLOT(readPendingDatagrams));
    }


public slots:
        void readPendingDatagrams()
        {
            while (udpSocket->hasPendingDatagrams()) {
                QByteArray datagram;
                datagram.resize(udpSocket->pendingDatagramSize());
                QHostAddress sender;
                quint16 senderPort;

                udpSocket->readDatagram(datagram.data(),datagram.size(),&sender,&senderPort);
                qDebug()<<"recv:"<<datagram;

                udpSocket->writeDatagram(datagram.data(),datagram.size(),sender,senderPort);
            }
        }


    }

signals:



};

#endif // UDPSEVER_H

udp server 的 main

#include <QCoreApplication>
#include  <udpServer>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    udpserver server;
    server.init();

    return a.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值