Soumettre la recherche
Mettre en ligne
Qt でIRCクライアント作ってみた
•
Télécharger en tant que ODP, PDF
•
1 j'aime
•
1,166 vues
Yikei Lu
Suivre
Qt でIRCクライアント作ってみた。 Qt勉強会 @ 東京
Lire moins
Lire la suite
Technologie
Divertissement et humour
Signaler
Partager
Signaler
Partager
1 sur 18
Télécharger maintenant
Recommandé
Qt creatorでremote_debug
Qt creatorでremote_debug
Kazuo Asano (@kazuo_asa)
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Kazuo Asano (@kazuo_asa)
仮想通貨ボットサービスによるJSボット作成
仮想通貨ボットサービスによるJSボット作成
慎二 山田
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 hamanako
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 hamanako
Kazuo Asano (@kazuo_asa)
Make a graph at Qt(used Qwt library)
Make a graph at Qt(used Qwt library)
Kazuo Asano (@kazuo_asa)
Real legacy
Real legacy
Koichiro Ohba
Git地図
Git地図
yoshiaki iwanaga
git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
Recommandé
Qt creatorでremote_debug
Qt creatorでremote_debug
Kazuo Asano (@kazuo_asa)
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Kazuo Asano (@kazuo_asa)
仮想通貨ボットサービスによるJSボット作成
仮想通貨ボットサービスによるJSボット作成
慎二 山田
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 hamanako
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 hamanako
Kazuo Asano (@kazuo_asa)
Make a graph at Qt(used Qwt library)
Make a graph at Qt(used Qwt library)
Kazuo Asano (@kazuo_asa)
Real legacy
Real legacy
Koichiro Ohba
Git地図
Git地図
yoshiaki iwanaga
git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
個人で作っているgoのプロダクト by zchee編
個人で作っているgoのプロダクト by zchee編
Koichi Shiraishi
Excite beer bash06
Excite beer bash06
Arata Honda
Groovyの紹介20130323
Groovyの紹介20130323
Yasuharu Hayami
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
Tadahiro Ishisaka
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
Ryo Sumasu
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
mihararyosuke
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
Tadahiro Ishisaka
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
NAKAOKU Takahiro
it's Qt!
it's Qt!
You&I
Gitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめに
Kazuki Sakai
Qt のコミュニティと日本語での情報発信②
Qt のコミュニティと日本語での情報発信②
Yikei Lu
mikutter入門
mikutter入門
Katsuyoshi Matsumoto
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
Kiyoshi SATOH
統一Qtコミュニティー
統一Qtコミュニティー
Yikei Lu
私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ
Shihomi Katayama
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Uehara Junji
Datalab and colaboratory
Datalab and colaboratory
Hayato Yoshikawa
dokku を本番環境で使ってみた話
dokku を本番環境で使ってみた話
Kazuhiro Nishiyama
Serverless on GCP
Serverless on GCP
Hayato Yoshikawa
Gws 20130315 gradle_handson
Gws 20130315 gradle_handson
Nobuhiro Sue
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
Kazuo Asano (@kazuo_asa)
Contenu connexe
Tendances
個人で作っているgoのプロダクト by zchee編
個人で作っているgoのプロダクト by zchee編
Koichi Shiraishi
Excite beer bash06
Excite beer bash06
Arata Honda
Groovyの紹介20130323
Groovyの紹介20130323
Yasuharu Hayami
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
Tadahiro Ishisaka
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
Ryo Sumasu
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
mihararyosuke
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
Tadahiro Ishisaka
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
NAKAOKU Takahiro
it's Qt!
it's Qt!
You&I
Gitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめに
Kazuki Sakai
Qt のコミュニティと日本語での情報発信②
Qt のコミュニティと日本語での情報発信②
Yikei Lu
mikutter入門
mikutter入門
Katsuyoshi Matsumoto
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
Kiyoshi SATOH
統一Qtコミュニティー
統一Qtコミュニティー
Yikei Lu
私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ
Shihomi Katayama
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Uehara Junji
Datalab and colaboratory
Datalab and colaboratory
Hayato Yoshikawa
dokku を本番環境で使ってみた話
dokku を本番環境で使ってみた話
Kazuhiro Nishiyama
Serverless on GCP
Serverless on GCP
Hayato Yoshikawa
Gws 20130315 gradle_handson
Gws 20130315 gradle_handson
Nobuhiro Sue
Tendances
(20)
個人で作っているgoのプロダクト by zchee編
個人で作っているgoのプロダクト by zchee編
Excite beer bash06
Excite beer bash06
Groovyの紹介20130323
Groovyの紹介20130323
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
it's Qt!
it's Qt!
Gitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめに
Qt のコミュニティと日本語での情報発信②
Qt のコミュニティと日本語での情報発信②
mikutter入門
mikutter入門
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
統一Qtコミュニティー
統一Qtコミュニティー
私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Datalab and colaboratory
Datalab and colaboratory
dokku を本番環境で使ってみた話
dokku を本番環境で使ってみた話
Serverless on GCP
Serverless on GCP
Gws 20130315 gradle_handson
Gws 20130315 gradle_handson
Similaire à Qt でIRCクライアント作ってみた
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
Kazuo Asano (@kazuo_asa)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Naoki Matsumoto
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
EdisonでMQTT
EdisonでMQTT
shirou wakayama
QtでC++開発環境構築
QtでC++開発環境構築
You&I
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
Yuki Suga
Code ignitertalk 01
Code ignitertalk 01
Takako Miyagawa
みんなのブログ紹介
みんなのブログ紹介
Sanae Taniguchi
MQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou
Piwik fluentd at OSC Tokyo 2015 Fall
Piwik fluentd at OSC Tokyo 2015 Fall
Takashi Yamamoto
.NET Core時代のCI/CD
.NET Core時代のCI/CD
Yuta Matsumura
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
Kensuke Maeda
Fukuoka Ruby Award 2012
Fukuoka Ruby Award 2012
ThinReports
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Logにまつわるエトセトラ
Logにまつわるエトセトラ
leverages_event
Endo kitura on_bluemix
Endo kitura on_bluemix
joohoun song
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Preferred Networks
RTミドルウエア講習会2015
RTミドルウエア講習会2015
Yuki Suga
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
Jxck Jxck
Similaire à Qt でIRCクライアント作ってみた
(20)
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
EdisonでMQTT
EdisonでMQTT
QtでC++開発環境構築
QtでC++開発環境構築
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
Code ignitertalk 01
Code ignitertalk 01
みんなのブログ紹介
みんなのブログ紹介
MQTTとAMQPと.NET
MQTTとAMQPと.NET
Piwik fluentd at OSC Tokyo 2015 Fall
Piwik fluentd at OSC Tokyo 2015 Fall
.NET Core時代のCI/CD
.NET Core時代のCI/CD
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
Fukuoka Ruby Award 2012
Fukuoka Ruby Award 2012
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Logにまつわるエトセトラ
Logにまつわるエトセトラ
Endo kitura on_bluemix
Endo kitura on_bluemix
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
RTミドルウエア講習会2015
RTミドルウエア講習会2015
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
Qt でIRCクライアント作ってみた
1.
QtでIRCクライアント作ってみた @luyikei
2.
自己紹介 ● @luyikei です。 ● https://twitter.com/luyikei ●
3.
まず最初に・・・ ● プロジェクトを作成します ● 例ではプロジェクト名はQtestIRCでやります ● ターゲット!! Freenode の #luyikei
4.
まずは UI を作成しましょう
5.
部品 ● QPushButton :
connectButton ● QPushButton : disconnectButton ● QLineInput : inputLineEdit ● QPushButton : submitButton ● QTabWidget ● QTableVIew : messageView ● QTextEdit : logView
6.
Log と Message
完全分離(雑) ● TabWidget を使って Log と Message を振り分け る。 →これによってログを綺麗に表示する手間が省 ける(爆)
7.
ヘッダーファイル ● IRC も所詮ただの socket
を使った簡易チャット システム ● でも便利 ● private: QTcpSocket *socket; // IRC 通信用 QStandardItemModel *model; // messageView
8.
ヘッダーファイル 2 ● private
slots: void readData(); // socket の IRC メッセージ取得用 SLOT void connectToServer(); // connectButton の SLOT void disconnectFromServer(); /* disconnectButton の SLOT */ void sendMessage(); // submitButton の SLOT
9.
まずは MainWindow::MainWindow から socket
= new QTcpSocket(this); connect(socket,SIGNAL(readyRead()),this,SLOT(readData())); connect(ui->connectButton,SIGNAL(clicked()),this,SLOT(connectToServer())); connect(ui- >disconnectButton,SIGNAL(clicked()),this,SLOT(disconnectFromServer())); connect(ui->submitButton,SIGNAL(clicked()),this,SLOT(sendMessage())); model = new QStandardItemModel(0,1,this); model->setHorizontalHeaderItem(0,new QStandardItem("Username")); model->setHorizontalHeaderItem(1,new QStandardItem("Message")); ui->messageView->setModel(model);
10.
まずは connectToServer ()から socket->connectToHost(QString("chat.freenode.net"),6665);
/* freenode に接 続 */ socket->write("USER QtestIRC QtestIRC QtestIRC QtestIRC n"); /* USER を 登録 */ socket->write("NICK QtestIRC n"); // ニック を登録 socket->write("JOIN #luyikei n"); // #luyikei に入室
11.
IRC の書式① 接続編 USER
<username> <user's mode> <unused> <real name> ※ クライアントが新しく接続する場合に使います。 例(雑): USER QtestIRC QtestIRC QtestIRC QtestIRC ______________________________________________________________________ NICK <nickname> ※ ニックネームを設定します 例(雑): NICK QtestIRC
12.
IRC の書式② 入室編 JOIN
<ルーム名> 例: JOIN #luyikei
13.
sendMessage() QString toSend =
QString("PRIVMSG #luyikei %1 n").arg(ui->inputLineEdit->text()); // 送信す る IRC コマンド socket->write(toSend.toUtf8().data()); // socket に write つまり送信 int row = model->rowCount(); // 追加する Item の列番号を取得 // messageView に追加する Username と Message modelに設定 model->setItem(row,0,new QStandardItem(QString("QtestIRC"))); model->setItem(row,1,new QStandardItem(ui->inputLineEdit->text())); // 一応ログにも追加 ui->logView->append(toSend); // inputLineEditを綺麗に ui->inputLineEdit->clear();
14.
IRC の書式② 文字送信編 PRIVMSG
<ルーム名> <メッセージ> 例: PRIVMSG #luyikei HELLO!!
15.
readData() QString readLine =
socket->readLine(); // IRC サーバーから送られたメッセージを取得 ui->LogView->append(readLine); // logView にぶちこむ if(!(readLine.indexOf("PRIVMSG") == -1 )){ // メッセージか判定 QString msg = readLine.split(":").last(); // メッセージを取得 QString tmp = readLine.split("!~").first(); QString username = tmp.right(tmp.size()-1); // ユーザー名を取得 int row = model->rowCount(); model->setItem(row,0,new QStandardItem(QString(username))); model->setItem(row,1,new QStandardItem(QString(msg))); } if(socket->canReadLine()) readData(); // もしメッセージが残っている場合引き続き取得 再帰
16.
IRC の書式③ 文字取得編 ● 例: :luyikei__!~luyikei@124x35x199x106.ap124.ftth.ucom.ne.jp
PRIVMSG #luyikei :test つまり・・・ :<nickname>!~<ホスト名> PRIVMSG <ルーム名> :<メッセージ> として送られてくるのだ!
17.
disconnectFromServer() socket->flush(); // バッファに溜まっているメッセージを送信 socket->disconnect();
// 切断!!
18.
終わり!
Télécharger maintenant