国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QT--day4(定時(shí)器事件、鼠標(biāo)事件、鍵盤(pán)事件、繪制事件、實(shí)現(xiàn)畫(huà)板、QT實(shí)現(xiàn)TCP服務(wù)器)

這篇具有很好參考價(jià)值的文章主要介紹了QT--day4(定時(shí)器事件、鼠標(biāo)事件、鍵盤(pán)事件、繪制事件、實(shí)現(xiàn)畫(huà)板、QT實(shí)現(xiàn)TCP服務(wù)器)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?QT實(shí)現(xiàn)tcpf服務(wù)器代碼:(源文件)

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //給服務(wù)器指針實(shí)例化空間
    server = new QTcpServer(this);
}

Widget::~Widget()
{
    delete ui;
}

//啟動(dòng)服務(wù)器按鈕對(duì)應(yīng)的槽函數(shù)
void Widget::on_startBtn_clicked()
{
    //獲取ui界面上的端口
   quint16 port = ui->portEdit->text().toInt();

   //將服務(wù)器設(shè)置成監(jiān)聽(tīng)狀態(tài)
   if(server->listen(QHostAddress::Any,port))
   {
       QMessageBox::information(this,"","服務(wù)器啟動(dòng)成功");
   }
   else
   {
       QMessageBox::information(this,"","服務(wù)器啟動(dòng)失敗");
   }
   //此時(shí)服務(wù)器已經(jīng)進(jìn)入監(jiān)聽(tīng)狀態(tài),如果有客戶端發(fā)來(lái)連接請(qǐng)求,那么該服務(wù)器就會(huì)自動(dòng)發(fā)射一個(gè)newConnection信號(hào)
   //我們可以將該信號(hào)連接到自定義的槽函數(shù)中處理新連接的套接字
   connect(server,&QTcpServer::newConnection,this,&Widget::newConnection_slot);
}

void Widget::newConnection_slot()
{
    qDebug()<<"有新客戶連接";
    //獲取最新連接的客戶端套接字
    QTcpSocket *s=server->nextPendingConnection();
    //將該套接字放入到客戶端容器中
    socketlist.push_back(s);
    //此時(shí),客戶端與服務(wù)器已經(jīng)建立起來(lái)連接
    //如果有客戶端向服務(wù)器發(fā)來(lái)數(shù)據(jù),那么該客戶端會(huì)自動(dòng)發(fā)射一個(gè)readyRead信號(hào)
    //我們可以在該信號(hào)對(duì)應(yīng)的槽函數(shù)中,讀取客戶端中的數(shù)據(jù)
    connect(s,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);
}
void Widget::readyRead_slot()
{
    //移除無(wú)效客戶端
    for(int i=0;i<socketlist.count();i++)
    {
        if(socketlist.at(i)->state()==0)
        {
            socketlist.removeAt(i);
        }
    }
     //遍歷客戶端套接字,尋找是哪個(gè)客戶端有數(shù)據(jù)待讀
    for(int i=0;i<socketlist.count();i++)
    {
        //判斷當(dāng)前套接字是否有數(shù)據(jù)待讀
        if(socketlist.at(i)->bytesAvailable()!=0)
        {
            //讀取套接字中的所有數(shù)據(jù)
            QByteArray msg = socketlist.at(i)->readAll();

            //將數(shù)據(jù)展示到ui界面
            ui->listWidget->addItem(QString::fromLocal8Bit(msg));
            //將數(shù)據(jù)發(fā)送給所有客戶端
            for(int j=0;j<socketlist.count();j++)
            {
                //將數(shù)據(jù)寫(xiě)入到所有客戶端套接字中
                socketlist.at(j)->write(msg);
            }
        }
    }
}

頭文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTcpServer>
#include <QTcpSocket>
#include <QMessageBox>
#include <QDebug>
#include <QList>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_startBtn_clicked();
    void newConnection_slot();
    void readyRead_slot();

private:
    Ui::Widget *ui;

    QTcpServer *server;
    QList<QTcpSocket *> socketlist;
};
#endif // WIDGET_H

文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-615263.html

到了這里,關(guān)于QT--day4(定時(shí)器事件、鼠標(biāo)事件、鍵盤(pán)事件、繪制事件、實(shí)現(xiàn)畫(huà)板、QT實(shí)現(xiàn)TCP服務(wù)器)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • windows消息 鼠標(biāo)消息、定時(shí)器消息

    鼠標(biāo)消息分類(lèi): 1.基本鼠標(biāo)消息 WM_LBUTTONDOWN -鼠標(biāo)左鍵按下 WM_LBUTTONUP -鼠標(biāo)左鍵抬起 WM_RBUTTONDOWN -鼠標(biāo)右鍵按下 WM_RBUTTONUP -鼠標(biāo)右鍵抬起 附帶消息: wParam:其他按鍵的狀態(tài),例如CTRL/SHIFT等 lParam:鼠標(biāo)的位置,窗口客戶區(qū)坐標(biāo)系。 LOWORD x坐標(biāo)位置 HIWORD y坐標(biāo)位置 一般情況鼠標(biāo)

    2024年02月10日
    瀏覽(22)
  • Qt 定時(shí)器

    Qt 定時(shí)器

    startTimer(); 注意:定時(shí)器參數(shù)要是全局或者靜態(tài)變量。 ? 沒(méi)有結(jié)束函數(shù) int timerId=startTimer(); startTimer()返回定時(shí)器標(biāo)志 需設(shè)置為類(lèi)的成員--類(lèi)內(nèi)使用 通過(guò)定時(shí)器事件判斷 ? QTimer類(lèi)事件間隔到達(dá) QTimer不需要ID,只需要對(duì)象不同就可以區(qū)別定時(shí)器。 start() stop() ? ? timer=new QTimer(thi

    2024年02月09日
    瀏覽(23)
  • QT學(xué)習(xí)之定時(shí)器

    QT學(xué)習(xí)之定時(shí)器

    一、定時(shí)器 第一種方式: 1 利用事件 void timerEvent ( QTimerEvent * ev) 2 啟動(dòng)定時(shí)器 startTimer( 1000) 毫秒單位 3 timerEvent 的返回值是定時(shí)器的唯一標(biāo)示 可以和ev-timerid 做比較 第二種方式: 1 利用定時(shí)器類(lèi) QTimer 2 創(chuàng)建定時(shí)器對(duì)象 QTimer * timer = new QTimer(this) 3 啟動(dòng)定時(shí)器 timer-start(毫秒)

    2024年02月16日
    瀏覽(21)
  • 【QT】時(shí)間日期與定時(shí)器

    【QT】時(shí)間日期與定時(shí)器

    目錄 1.時(shí)間日期相關(guān)的類(lèi) 2.日期時(shí)間數(shù)據(jù)與字符串之間的轉(zhuǎn)換 2.1 時(shí)間、日期編輯器屬性設(shè)置 2.2 日期時(shí)間數(shù)據(jù)的獲取與轉(zhuǎn)換為字符串 2.3?字符串轉(zhuǎn)換為日期時(shí)間 3.QCaIendarWidget日歷組件 3.1基本屬性 3.2?公共函數(shù) 3.3?信號(hào) 4.實(shí)例程序演示時(shí)間日期與定時(shí)器的使用 時(shí)間日期是經(jīng)常

    2024年02月04日
    瀏覽(20)
  • Qt學(xué)習(xí)(一)-------- 定時(shí)器、繪圖

    Qt學(xué)習(xí)(一)-------- 定時(shí)器、繪圖

    1.定時(shí)器 QTimer ? ??? 創(chuàng)建定時(shí)器對(duì)象??QTimer *timer = new QTimer(this); ? ?? 啟動(dòng)定時(shí)器?timer-start(毫秒); ? ?? 監(jiān)聽(tīng)信號(hào) connect(timer,QTimer::timeout,[=](){? ? ?}); -----------------------------------------------------------例子----------------------------------------------------------- ? ? ? 點(diǎn)擊暫停,實(shí)現(xiàn)

    2024年02月03日
    瀏覽(25)
  • 【QT】——定時(shí)器QTimer的使用

    【QT】——定時(shí)器QTimer的使用

    目錄 常見(jiàn)的函數(shù) 構(gòu)造函數(shù) 獲取/設(shè)置定時(shí)器間隔時(shí)間 啟動(dòng)/停止定時(shí)器? 信號(hào) 設(shè)置定時(shí)器的時(shí)間的兩種方法 設(shè)置定時(shí)器精度 其他函數(shù) 靜態(tài)函數(shù) 實(shí)例 QTimer是QT框架中的定時(shí)器類(lèi)型,它的使用方法如下: 定義一個(gè)調(diào)用QTimer對(duì)象,調(diào)用start()函數(shù)啟動(dòng)定時(shí)器,則 定時(shí)器則會(huì)周期

    2024年02月12日
    瀏覽(23)
  • 自定義循環(huán)隊(duì)列、軟件定時(shí)器、事件集,實(shí)用嵌入式代碼庫(kù)

    本篇博文分享一個(gè)很實(shí)用的嵌入式代碼庫(kù)。 它可靈活應(yīng)用到有無(wú)RTOS的程序中,采用C語(yǔ)言面向?qū)ο蟮乃悸穼?shí)現(xiàn)各個(gè)功能,盡可能最大化的復(fù)用代碼,目前為止工具包包含: 循環(huán)隊(duì)列、軟件定時(shí)器、事件集 。 網(wǎng)址:https://download.csdn.net/download/m0_38106923/87765476?spm=1001.2014.3001.550

    2024年02月03日
    瀏覽(23)
  • 對(duì)定時(shí)器中影子寄存器以及更新操作和更新事件理解

    對(duì)定時(shí)器中影子寄存器以及更新操作和更新事件理解

    本人是stm32初學(xué)者,近期在看定時(shí)器參考文檔時(shí)遇到些阻礙,再參考了眾多CSDN博主的文章后,得到了一些個(gè)人理解,將其發(fā)布出來(lái),本文也對(duì)一些參考的文章進(jìn)行了不少?gòu)?fù)制粘貼同時(shí)也在這些文章必要位置加入了個(gè)人看法,文章鏈接附在最后 由于本人是初學(xué)者,本文一定存在

    2024年02月05日
    瀏覽(21)
  • 51單片機(jī)定時(shí)器使用與計(jì)算-----day3

    51單片機(jī)定時(shí)器使用與計(jì)算-----day3

    51單片機(jī)定時(shí)器-----day3 8051單片機(jī)介紹: 集成 8位CPU、 4K字節(jié)ROM(掉電不丟失)、 128字節(jié)RAM(掉電丟失)、 4個(gè)8位并口、 1個(gè)全雙工串行口、2個(gè)16位定時(shí)/計(jì)數(shù)器。 尋址范圍64K, 并有控制功能較強(qiáng)的布爾處理器(帶位操作)。 單片機(jī)結(jié)構(gòu)內(nèi)部框圖: 機(jī)器周期和指令周期 ( 1)

    2024年02月03日
    瀏覽(23)
  • qt學(xué)習(xí):QTimer定時(shí)器+重復(fù)計(jì)時(shí)+單次計(jì)時(shí)

    在指定的間隔時(shí)間會(huì)發(fā)送出一個(gè)timeout信號(hào),關(guān)聯(lián)對(duì)應(yīng)的槽函數(shù) #includeQTimer

    2024年01月19日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包