qt でircクライアント作ってみた

Download Qt でIRCクライアント作ってみた

If you can't read please download the document

Upload: yikei-lu

Post on 19-May-2015

555 views

Category:

Technology


8 download

DESCRIPTION

Qt でIRCクライアント作ってみた。 Qt勉強会 @ 東京

TRANSCRIPT

  • 1. QtIRC @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 (): USER QtestIRC QtestIRC QtestIRC QtestIRC ______________________________________________________________________ NICK (): 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 : :[email protected] PRIVMSG #luyikei :test :!~ PRIVMSG : 17. disconnectFromServer() socket->flush(); // socket->disconnect(); // 18.