Qt网络编程练习(20200221)

QT += network widgets

HEADERS       = sender.h
SOURCES       = sender.cpp \
                main.cpp

# install
target.path = $$[QT_INSTALL_EXAMPLES]/network/broadcastsender
INSTALLS += target
#include <QApplication>

#include "sender.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Sender sender;
    sender.show();
    return app.exec();
}
#include <QtWidgets>
#include <QtNetwork>

#include "sender.h"

Sender::Sender(QWidget *parent)
    : QWidget(parent)
{
    statusLabel = new QLabel(tr("Ready to broadcast datagrams on port 45454"));
    statusLabel->setWordWrap(true);

    startButton = new QPushButton(tr("&Start"));
    quitButton = new QPushButton(tr("&Quit"));

    buttonBox = new QDialogButtonBox;
    buttonBox->addButton(startButton, QDialogButtonBox::ActionRole);
    buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole);

    timer = new QTimer(this);
//! [0]
    udpSocket = new QUdpSocket(this);
//! [0]
    messageNo = 1;

    connect(startButton, SIGNAL(clicked()), this, SLOT(startBroadcasting()));
    connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));
    connect(timer, SIGNAL(timeout()), this, SLOT(broadcastDatagram()));

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(statusLabel);
    mainLayout->addWidget(buttonBox);
    setLayout(mainLayout);

    setWindowTitle(tr("Broadcast Sender"));
}

void Sender::startBroadcasting()
{
    startButton->setEnabled(false);
    timer->start(1000);
}

void Sender::broadcastDatagram()
{
    statusLabel->setText(tr("Now broadcasting datagram %1").arg(messageNo));
//! [1]
    QByteArray datagram = "Broadcast message " + QByteArray::number(messageNo);
    udpSocket->writeDatagram(datagram.data(), datagram.size(),
                             QHostAddress::Broadcast, 45454);
//! [1]
    ++messageNo;
}
#ifndef SENDER_H
#define SENDER_H

#include <QWidget>

QT_BEGIN_NAMESPACE
class QDialogButtonBox;
class QLabel;
class QPushButton;
class QTimer;
class QUdpSocket;
QT_END_NAMESPACE

class Sender : public QWidget
{
    Q_OBJECT

public:
    Sender(QWidget *parent = 0);

private slots:
    void startBroadcasting();
    void broadcastDatagram();

private:
    QLabel *statusLabel;
    QPushButton *startButton;
    QPushButton *quitButton;
    QDialogButtonBox *buttonBox;
    QUdpSocket *udpSocket;
    QTimer *timer;
    int messageNo;
};

#endif

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt5编程入门PDF是一本介绍Qt5编程的入门教程,适合初学者学习Qt5编程的人使用。Qt是一个跨平台的应用程序开发框架,能够帮助开发者快速构建高质量的应用程序。Qt5是Qt框架的最新版本,引入了许多新的特性和改进。 这本PDF详细介绍了Qt5的基本知识和常用功能,包括Qt5的安装、配置开发环境、Qt Creator的使用、界面设计、信号和槽、布局管理、控件的使用等等。通过阅读这本教程,读者可以了解Qt5编程的基本概念和技巧,并且能够使用Qt5开发简单的应用程序。 这本PDF的优点是语言简洁明了,图文并茂,易于理解和学习。它循序渐进地引导读者学习Qt5编程,并提供了大量的实例代码和练习题,读者可以通过实践来加深对知识点的理解和掌握。 对于想要学习Qt5编程的初学者来说,这本PDF是一个很好的起点。它为读者提供了一个系统而全面的学习路径,帮助他们逐步掌握Qt5编程的基础知识和技能。同时,这本PDF也可以作为Qt5编程的参考手册,在开发过程中随时查阅和借鉴。 总之,Qt5编程入门PDF是一个值得推荐的学习资源,无论是想要入门Qt5编程的初学者,还是想要提升Qt5编程技能的开发者,都可以从中获得帮助和收益。 ### 回答2: 《Qt5编程入门》是一本针对Qt5编程初学者的入门教程,该教程使用中文进行讲解,可以帮助读者快速掌握Qt5编程的基础知识和技能。 首先,这本教程会介绍Qt5的基本概念和主要特点,让读者对Qt有一个整体的了解。然后,教程会详细介绍Qt的安装和配置,包括如何在不同的开发平台上安装Qt以及如何配置开发环境。 接着,教程会逐步介绍Qt的主要组件和功能,包括窗口、控件、布局、信号与槽等等。读者将学习如何使用这些组件和功能来开发基于Qt的应用程序。 此外,教程还会涉及到Qt的绘图、动画、多线程等高级功能,帮助读者进一步提升自己的Qt编程水平。同时,教程也会介绍一些实际的应用案例,让读者了解如何将Qt应用于实际项目开发中。 最后,教程会提供一些实践项目和练习题,让读者通过实际动手操作来巩固所学知识。通过完成这些项目和练习,读者能够更好地理解和掌握Qt编程的技巧和流程。 总之,如果你对Qt5编程感兴趣并且想要快速入门,我推荐你阅读《Qt5编程入门》这本书。通过学习这本教程,你将能够系统地学习和掌握Qt5编程的基础知识和技能,为以后的Qt项目开发打下坚实的基础。 ### 回答3: Qt5编程入门 PDF是一本适合初学者入门的编程书籍,主要介绍了Qt5的基础知识和编程技巧。该书以PDF格式出版,方便读者进行电子阅读和学习。 这本书首先介绍了Qt5的基本概念和特点,包括Qt的模块、类体系结构和信号槽机制等。然后详细介绍了Qt的核心模块,如窗口部件、图形视图、布局管理器等,以及常用的辅助模块,如文件系统、网络、多线程等。每个模块都结合实例进行讲解,帮助读者理解和掌握Qt5的各种功能和用法。 此外,本书还有一些实践项目,供读者练习和巩固所学知识。通过这些项目的实践,读者可以更好地了解Qt5的应用场景和开发流程。书中也提供了一些实用技巧和调试方法,帮助读者更轻松地解决问题和提高编程效率。 这本书的优点是内容翔实、结构清晰,对于初学者来说很友好。同时,书中还提供了丰富的示例代码和图表,帮助读者更直观地理解和运用所学知识。另外,该书还提供了一些扩展阅读和学习资源,让读者在掌握基础后可以进一步扩展自己的知识和技能。 总之,Qt5编程入门 PDF是一本很实用的编程入门书籍,适合想要学习Qt5编程的初学者阅读和学习。通过阅读这本书,读者可以系统地学习和掌握Qt5的基础知识和编程技巧,为以后的Qt5开发奠定坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值