[Решено] QT (основы)
Модератор: Модераторы разделов
-
Lostboy
- Сообщения: 33
- ОС: openSUSE/Mandriva
[Решено] QT (основы)
Нужно написать интерфейс, решил работать с QT так как по ней много инфы да и стоит она уже вместе с KDevelop на моей Suse (KDE)
Так вот, не могу найти ни одного подробного описания для начинающего, как с этим зверем работать. Всю голову уже поломал (после MSVS тяжело переходить) мне для начала хотя бы просто создать форму, повесить на нее 1 Эдит и к Баттон и повесить на них события. Кто может помогите, желательно с пояснениями, т.к. просто создать форму с элементами проблем нет, сохранить ее тоже (с раcширением .ui) Но вот как осуществить привязку..
Так вот, не могу найти ни одного подробного описания для начинающего, как с этим зверем работать. Всю голову уже поломал (после MSVS тяжело переходить) мне для начала хотя бы просто создать форму, повесить на нее 1 Эдит и к Баттон и повесить на них события. Кто может помогите, желательно с пояснениями, т.к. просто создать форму с элементами проблем нет, сохранить ее тоже (с раcширением .ui) Но вот как осуществить привязку..
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
-
Lostboy
- Сообщения: 33
- ОС: openSUSE/Mandriva
Re: [Решено] QT (основы)
Это конечно хорошая ссылка и я там был, НО там очень много информации и она охватывает много разделов, мне нужно конкретно как связать объект на форме с его описанием, т.е. как повесить событие (на форму/на кнопку) вот и все, просто нет времени сейчас углубленно изучать и вычитать все прелести QT... Кто-то может помочь?
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
-
Tetsuzin
- Сообщения: 136
- ОС: Vista, Ubuntu
Re: [Решено] QT (основы)
Задавите земноводное, и купите книжку. Бумажную.
Например таких авторов:
1. Бланшет Ж. Саммерфилд М.
2. Шлее М.
Например таких авторов:
1. Бланшет Ж. Саммерфилд М.
2. Шлее М.
-
agentprog
- Сообщения: 362
- Статус: Ad Astra per aspera
- ОС: openSUSE 11.4, Arch
Re: [Решено] QT (основы)
No problems - just solutions!
-
Lostboy
- Сообщения: 33
- ОС: openSUSE/Mandriva
Re: [Решено] QT (основы)
У меня такой вопрос возможно ли соединить воедино код который был написан на С под консоль вместе с QT?
Я создал форму, повесил кнопку, и хочу чтоб по нажатию на нее выполнялся код. Вот к примеру такой код клиента:
Но при компиляции я получаю много плохих слов.
Есть какое-то средство решения данной проблемы или необходимо все переделать под QT используя его классы и т.д..?
з.ы.Может надо как-то хитро подключить хидеры или еще что-то? Проект делается С++, потому что в С-проекте нет раздела QT и ошибки в основном сыпятся на функции: connect, send, close.
Однако при этом подключены:
и не только..
Вот ошибки:
Такое ощущение, что функции берутся не те которые мне нужны, а те которые есть в 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>и не только..
Вот ошибки:
Код: Выделить всё
компиляция 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 ***Такое ощущение, что функции берутся не те которые мне нужны, а те которые есть в Qt с такими же именами...
-
Lostboy
- Сообщения: 33
- ОС: openSUSE/Mandriva
Re: [Решено] QT (основы)
Проблема решена.
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
Re: [Решено] QT (основы)
Ну так опишите решение, так сказать, для потомков... вдруг у кого-то еще появится схожий вопрос :-)
P.S. Если не сложно, то подправте заголовок темы добавиви [Решено] ;-)
[x] close
-
iljaCPP
- Сообщения: 48
- ОС: Slackware
Re: [Решено] QT (основы)
Функция connect() конфликтует с QObject::connect, т.к. потомок QObject является текущей областью видимости.
Надо вызывать ::connect()
Надо вызывать ::connect()
-
Lostboy
- Сообщения: 33
- ОС: openSUSE/Mandriva
Re: [Решено] QT (основы)
Да, iljaCPP, прав и не только функция connect(), но и close() (в полном варианте программы еще некоторые) поэтому помимо того что нужно подключить их хидеры, необходимо их вызывать следующим образом ::connect() , так как в текущей области видимости они либо не числятся либо принимают совсем другие параметры, а так мы вызываем их из глобального пространства и все работает.
-
Leviafant
- Сообщения: 47
- ОС: Мандрива 2010
Re: [Решено] QT (основы)
Помогите и мне
Как вместо "test" вывести результат функции check_frontend(fe_fd)? А то результат выводится только в консоль, а мне надо что бы он был виден в окне
Код: Выделить всё
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
int fe_fd;
check_frontend(fe_fd);
QLabel lbl("test", 0);
app.setActiveWindow(&lbl);
lbl.show();
return app.exec();
}Как вместо "test" вывести результат функции check_frontend(fe_fd)? А то результат выводится только в консоль, а мне надо что бы он был виден в окне
-
RasenHerz
- Сообщения: 1341
- ОС: Arch Linux amd64
-
Leviafant
- Сообщения: 47
- ОС: Мандрива 2010
Re: [Решено] QT (основы)
вот сама функция
Код: Выделить всё
static
int check_frontend (int fe_fd)
{
fe_status_t status;
uint16_t snr, signal;
uint32_t ber, uncorrected_blocks;
ioctl(fe_fd, FE_READ_STATUS, &status);
ioctl(fe_fd, FE_READ_SIGNAL_STRENGTH, &signal);
ioctl(fe_fd, FE_READ_SNR, &snr);
ioctl(fe_fd, FE_READ_BER, &ber);
ioctl(fe_fd, FE_READ_UNCORRECTED_BLOCKS, &uncorrected_blocks);
printf("status %02d | signal %04d | snr %04d |",
status, signal*100/65535, snr*100/65535);
if (status & FE_HAS_LOCK)
printf("FE_HAS_LOCK");
printf("\n");
return 0;
}