开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Qt5.3.2
问题(Question):
https://github.com/redkite1/qtelnetperso
下载了别人的telnet src "qtelnetperso.h"
主要做一个很简单测试
我用一个button让他按下后作连线 之后检查连上了没
连上了之后才开始做其他事
但测试过后好像在同一个button事件内永远都是未连线
一直到事件结束才会变已连线 看code感觉是signal跟slot机制的关系?
t是telnet的object button click只做以下两件事
1. t->connectToHost 连上后会去更新connected这个member
2. t->isConnected() 永远都是false
1跟2之间即使加了delay结果还是一样
一直到button click的slot结束后 connected才会变true
请问应该如何做才能达到我想要的目的?
下面的code我只贴我自己测试的部分
src的部分可以参考上面的网址
程式码(Code):(请善用置底文网页, 记得排版)
maindows.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "qtelnetperso.h"
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
void show_on_plaintext(QString text);
void socketConnected();
void on_pushButton_2_clicked();
private:
Ui::MainWindow *ui;
QTelnetPerso *t;
};
#endif // MAINWINDOW_H
*****************************************************************
mainwindos.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QThread"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
t = new QTelnetPerso;
connect(t,SIGNAL(message(QString)) , this ,
SLOT(show_on_plaintext(QString)));
connect(t,SIGNAL(sockConnected()), this , SLOT(socketConnected()));
}
void MainWindow::show_on_plaintext(QString text)
{
ui->plainTextEdit->appendPlainText(text);
}
void MainWindow::socketConnected()
{
ui->plainTextEdit->appendPlainText("Connected");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
t->connectToHost("ptt.cc" , 23);
if(t->isConnected())
ui->plainTextEdit->appendPlainText("Connected");
return;
}