Eleganckie komunikowanie się z użytkownikiem

0

Witam, mam problem natury estetycznej ;P Tytułem wstepu: piszę prosty klient-serwer w Qt. na razie ma to być na konsoli, bo i tak pewnie wrzucę serwer na VPSa a klienta będę odpalał w terminalu (jeszcze nie wiem czym będzie ten program docelowo). Na razie pracuję nad samym systemem łączenia się ale to nie on sprawia mi problemy a pozornie prosty problem.

#include "Server.hpp"

Server::Server(unsigned port, QObject *parent)  : port(port), QObject(parent)
{
    server = new QTcpServer(this);
}

void Server::start()
{
    connect(server, SIGNAL(newConnection()), this, SLOT(addClient()));

    if(!server->listen(QHostAddress::Any, port))
        throw ConnectionException("Nie udalo sie wystartowac serwera...");
}

void Server::stop()
{

}

void Server::addClient()
{
    QTcpSocket * client = server->nextPendingConnection();
    //Oczekuje na polaczenie

    std::cout << "Dodano klienta (" << client->peerAddress().toString().toStdString() << ")." << std::endl;
}

Server::~Server(){}

Pierwsze co się rzuca w tym kodzie zanim się w niego zagłębimy to ta paskudna linijka z std::cout... . Chciałbym pozbyć się jakoś tej linijki ale mimo wszystko zależy mi na wyświetlaniu wiadomości. W grę wchodzi kilka możliwości:

  1. Stworzenie metody w tej klasie odpowiadającej za wyświetlanie komunikatów od serwera.
  2. Stworzenie jakiejś klasy (np. statycznej), która zajmie się komunikatami tego typu.
  3. Pozostawienie jak jest
  4. Może Qt ma jakiś mechanizm, który to obsłuży (MessageBox w grę nie wchodzi, bo jest okienkowy)
  5. Coś innego.

Program ma być w założeniu napisany "pro" i chcę się nauczyć dobrych nawyków, m.in. właśnie dotyczących takich "pierdół" jak komunikacja z użytkownikiem. Jak Wy rozwiązalibyście ten problem? Pzdr

1

Nie wypisuj od razu na konsolę. Stwórz specjalną klasę która będzie zbierała komunikaty i przekazywała je w odpowiednie miejsce np. konsola, plik albo okno. Może być statyczna albo na singletonie (lepiej).

0

Rozumiem, że pisząc "zbierania" masz na myśli coś takiego

Message::console("blabla");

?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.