crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> qt & Visual studio 2010, Нет соединения в сигналах и слотах
eldar85
  опции профиля:
сообщение 21.10.2011, 13:14
Сообщение #1


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день. Раньше программировал в кьти креаторе и не задумывалсячто может возникнуть проблема в подключении сигналов и слотов.
Потом стал программировать на VS и на пол года оставил Qt, но видя какие ужасные интерфейсы получаются на VS решил подключить Qt в VS2010, всю ночь мучался с подключением, установил автоматом Qt c утилитой add_in_vs с офф сайта Qt, но оказалось что это только начало и придется сильно повазиться) но эту мат часть с горем попалам одалел, 3х часавая сборка библиотек с jim.exe и прописывание патчей в переменные среды помогла и вот я уже сделал Qt окно в дизайнере, открыт проект в vs2010, все отлично, но!!!

примерчик то собвственно простой пока, тут только textEdit и кнопочка, просто попробовать все ли работает. В дизайнере кака я понял нельзя щелкнуть правой кнопкой мыши и выбрать перейти к слоту, создал паблик слот в MainWindow, и попробовал сразу из конструктора написать текс в textEdit и отлично написалось.
затем сделал в том же конструкторе коннект кнопки и слоты и тишина... Даже когда пишешь сам конект, обычно вылазиют посказки что мол есть у кнопки такие то слоты и можно выбрать, тут же нет ни одного события которое можно выбрать у кнопки. т.е. я пишу так
QObject::connect(ui.btPushMe, SIGNAL( //и тут уже долны вылезти посказки
но ничего нет, прописал полностью от руки сигнал clicked()
QObject::connect(ui.btPushMe, SIGNAL(clicked()), this, SLOT(ShowText()));

и ничего не происходит при нажатии на кнопку...

ну и для наглядности покажу весь код чтобы более понятно было
#ifndef MYCLASS_H
#define MYCLASS_H

#include <QtGui>
#include "ui_myclass.h"

class MyClass : public QMainWindow
{
    Q_OBJECT

public:
    MyClass(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~MyClass();

private:
    Ui::MyClassClass ui;

public slots:
    void ShowText();
};

#endif // MYCLASS_H

#include "stdafx.h"
#include "myclass.h"

MyClass::MyClass(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);

    QObject::connect(ui.btPushMe, SIGNAL(clicked()), this, SLOT(ShowText()));
    ShowText();
}

MyClass::~MyClass()
{

}

void MyClass::ShowText()
{
    ui.textEdit->append("Ura!!!");
}

Как быть? Подскажите пожалуйста. ЗАранее благодарю ;)

Сообщение отредактировал eldar85 - 21.10.2011, 13:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 21.10.2011, 13:29
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


В консоль ничего не пишет?

Парочку замечаний:
1)
Ui::MyClassClass *ui;

2) не
QObject::connect(ui.btPushMe, SIGNAL(clicked()), this, SLOT(ShowText()));
ShowText();
а
connect(ui->btPushMe, SIGNAL(clicked()), this, SLOT(ShowText()));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 21.10.2011, 13:51
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(RazrFalcon @ 21.10.2011, 14:29) Link
Парочку замечаний:
1)
Ui::MyClassClass *ui;

Для чего? :) Что бы создавать его руками через new, а потом стараться не забыть его разрушить руками через delete?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 21.10.2011, 13:57
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Ну по дефолту то указатель <_<
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 21.10.2011, 14:04
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(RazrFalcon @ 21.10.2011, 14:57) Link
Ну по дефолту то указатель <_<

О каком дефолте идет речь?
Если ты про примеры, то это личные предпочтения его автора.
Есть три способа внедрения Ui-объекта и у каждого есть свои плюсы и минусы.
Я вообще использую множественное наследование. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 21.10.2011, 14:23
Сообщение #6


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


решил все еще раз перекомпилировать как написано здесь
Link
сижу вот жду когда закончиться, ночью на это ушло часа три где то, но вылезло парочка ошибок. На всякий пожарный решил перекомпилить.
А в консоль ничего не выводилось, как будто и ошибок то нет. Открывается мое окошечко с текст эдитом и кнопкой, пишется в текст эдите один раз то что я вызвал в конструкторе слот
ShowText();

а потом при нажатии на кнопку просто тишина и все. Никаких сообщений в консоли ну и сигнал слот не срабатывает...

Сообщение отредактировал eldar85 - 21.10.2011, 14:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 21.10.2011, 15:26
Сообщение #7


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Может:
Цитата
QObject::connect(&ui.btPushMe, SIGNAL(clicked()), this, SLOT(ShowText()));


BRE, в Qt Creator, при создании нового проекта.
PS: я вообще ui не использую. Я сразу к объекту обращаюсь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 21.10.2011, 15:33
Сообщение #8


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


Пересборка библиотек решила проблему))) Но не совсем. Сигналы слоты соединяются, но при кампиляции релиза выходит такая ошибка
Link

Что это вообще обозначает? Что он не может найти библиотеку в патче или рядом с ехе? но в папке system32 у меня заброшены все необходимые файлы для запуска прог, и в том числе QtCore4.dll и QtGui4.dll. Или в чем то другом проблема?

Сообщение отредактировал eldar85 - 21.10.2011, 15:36
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 21.10.2011, 15:36
Сообщение #9


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


В винде не силен, но помойму он не видит либы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 21.10.2011, 15:48
Сообщение #10


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


пять самых важных либ я закинул в system32 - QtCore4.dll и QtGui4.dll, QtNetwork..., mingw10.dll (или как то так точно не помню названия и libgcc... какая то такая тоже там есть. Все проги написанные на креаторе запускаются без проблем.

подкинул дллку к ехе и все равно ошибка только немного по другому выглядит
Link

Сообщение отредактировал eldar85 - 21.10.2011, 15:49
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2025, 10:01