QT + консоль
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
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";
int sock;
struct sockaddr_in addr;
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock < 0)
{
perror("socket");
exit(1);
}
addr.sin_family = AF_INET;
addr.sin_port = htons(3425);
inet_aton(host, &addr.sin_addr.s_addr);
if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
{
perror("connect");
exit(2);
}
send(sock, message, sizeof(message), 0);
close(sock);
Но при компиляции я получаю много плохих слов. Есть какое-то средство решения данной проблемы или необходимо все переделать под QT используя его классы и т.д..? з.ы.Может надо как-то хитро подключить хидеры или еще что-то? Проект делается С++, потому что в С-проекте нет раздела QT и ошибки в основном сыпятся на функции: connect, send, close. Однако при этом подключены:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
и не только..
|
|
|
RE: QT + консоль - 2009-10-22 22:23:50.013333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
А что за ошибки?
|
|
|
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&, 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&)'
/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 с такими же именами…
|
|
|
RE: QT + консоль - 2009-10-22 22:50:37.840000
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
объявление класса Sender покажи, будь добр
|
|
|
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 <QDialog>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
class QPushButton;
class Sender : public QDialog
{
Q_OBJECT
public:
Sender(QWidget *parent = 0);
private slots:
void send1();
private:
QPushButton *sendButton;
QPushButton *createButton(const QString &text, const char *member);
};
#endif
|
|
|
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 *)&addr, sizeof(addr)) < 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);
|
|
|
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 а посмотреть, какие функции при таком наследовании попадают в область видимости - лень? компилятор не умеет читать мысли, увы
|
|
|
RE: QT + консоль - 2009-10-22 23:11:44.890000
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
Ну я пока тоже не гуру и всего не знаю( Спасибо за помощь! з.ы. Я правильно понял, что используя глобальный оператор разрешения (::) мы обращаемся не к функции которая находится в локальной области видимости, а к той, что в глобальной?
|
|
|
RE: QT + консоль - 2009-10-22 23:18:48.463333
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: Lost_boy Я правильно понял, что используя глобальный оператор разрешения (::) мы обращаемся не к функции которая находится в локальной области видимости, а к той, что в глобальной? в глобальном пространстве имён
|
|
|
RE: QT + консоль - 2009-10-22 23:30:49.380000
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
Понятно, еще раз спасибо за помощь)
|
|
|
|
|