Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

QT + консоль

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> QT + консоль
Имя
Сообщение << Старые топики   Новые топики >>
QT + консоль - 2009-10-22 21:51:29.293333   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
У меня такой вопрос возможно ли соединить воедино код который был написан на С под консоль вместе с QT?
Я создал форму, повесил кнопку, и хочу чтоб по нажатию на нее выполнялся код. Вот к примеру такой код клиента:
char message[] = "Hello there!\n"; char buf[sizeof(message)]; char host[] = "192.168.78.133"; &nbsp;&nbsp;&nbsp;int sock; &nbsp;&nbsp;&nbsp;struct sockaddr_in addr; &nbsp;&nbsp;&nbsp;sock = socket(AF_INET, SOCK_STREAM, 0); &nbsp;&nbsp;&nbsp;if(sock &lt; 0) &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror("socket"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(1); &nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;addr.sin_family = AF_INET; &nbsp;&nbsp;&nbsp;addr.sin_port = htons(3425); &nbsp;&nbsp;&nbsp;inet_aton(host, &amp;addr.sin_addr.s_addr); &nbsp;&nbsp;&nbsp;if(connect(sock, (struct sockaddr *)&amp;addr, sizeof(addr)) &lt; 0) &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror("connect"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(2); &nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;send(sock, message, sizeof(message), 0); &nbsp;&nbsp;&nbsp;close(sock); Но при компиляции я получаю много плохих слов.
Есть какое-то средство решения данной проблемы или необходимо все переделать под QT используя его классы и т.д..?

з.ы.Может надо как-то хитро подключить хидеры или еще что-то? Проект делается С++, потому что в С-проекте нет раздела QT и ошибки в основном сыпятся на функции: connect, send, close.
Однако при этом подключены:
#include &lt;sys/types.h&gt; #include &lt;sys/socket.h&gt; #include &lt;netinet/in.h&gt; и не только..
Post #: 1
RE: QT + консоль - 2009-10-22 22:23:50.013333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
А что за ошибки?
Post #: 2
RE: QT + консоль - 2009-10-22 22:29:06.680000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
компиляция sender.cpp (g++) sender.cpp: In member function 'void Sender::send1()': sender.cpp:71: error: no matching function for call to 'Sender::connect(int&amp;, sockaddr*, unsigned int)' /usr/include/QtCore/qobject.h:197: note: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType) /usr/include/QtCore/qobject.h:302: note: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const sender.cpp:81: error: no matching function for call to 'Sender::close(int&amp;)' /usr/include/QtGui/qwidget.h:476: note: candidates are: bool QWidget::close() gmake[1]: *** [sender.o] Error 1 gmake: *** [sub-src-make_default] Error 2 *** Завершено с кодом: 2 *** p.s. Код висел на кнопке, нажатие на которую вызывало ф-ю send, поменял ее на send1 - на 1 ошибку меньше стало.. но проблема так и висит.. пробовал докинуть хидеров в папку с QT шными - не помогло.
Такое ощущение, что функции берутся не те которые мне нужны, а те которые есть в Qt с такими же именами…
Post #: 3
RE: QT + консоль - 2009-10-22 22:50:37.840000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
объявление класса Sender покажи, будь добр
Post #: 4
RE: QT + консоль - 2009-10-22 22:55:23.323333   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
sender.h
#ifndef SENDER_H #define SENDER_H #include &lt;QDialog&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;fcntl.h&gt; #include &lt;sys/stat.h&gt; #include &lt;sys/types.h&gt; #include &lt;sys/socket.h&gt; #include &lt;netinet/in.h&gt; #include &lt;string.h&gt; class QPushButton; class Sender : public QDialog { Q_OBJECT public: Sender(QWidget *parent = 0); private slots: void send1(); private: QPushButton *sendButton; QPushButton *createButton(const QString &amp;text, const char *member); }; #endif
Post #: 5
RE: QT + консоль - 2009-10-22 22:58:46.983333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Lost_boy

У меня такой вопрос возможно ли соединить воедино код который был написан на С под консоль вместе с QT?


да, если немного думать головой в процессе. к слову, QT - это Quick Time, а то, чем ты пользуешься, называется Qt

quote:

ORIGINAL: Lost_boy

if(connect(sock, (struct sockaddr *)&amp;addr, sizeof(addr)) &lt; 0)

send(sock, message, sizeof(message), 0);
close(sock);


заменить на:

if(::connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)

::send(sock, message, sizeof(message), 0);
::close(sock);
Post #: 6
RE: QT + консоль - 2009-10-22 23:00:28.310000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Lost_boy

class Sender : public QDialog


а посмотреть, какие функции при таком наследовании попадают в область видимости - лень? компилятор не умеет читать мысли, увы
Post #: 7
RE: QT + консоль - 2009-10-22 23:11:44.890000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Ну я пока тоже не гуру и всего не знаю(
Спасибо за помощь!
з.ы. Я правильно понял, что используя глобальный оператор разрешения (::) мы обращаемся не к функции которая находится в локальной области видимости, а к той, что в глобальной?
Post #: 8
RE: QT + консоль - 2009-10-22 23:18:48.463333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Lost_boy

Я правильно понял, что используя глобальный оператор разрешения (::) мы обращаемся не к функции которая находится в локальной области видимости, а к той, что в глобальной?


в глобальном пространстве имён
Post #: 9
RE: QT + консоль - 2009-10-22 23:30:49.380000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Понятно, еще раз спасибо за помощь)
Post #: 10
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> QT + консоль







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.