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) *
Парочку замечаний:
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) *
Ну по дефолту то указатель <_<

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


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

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

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




Репутация:   0  


решил все еще раз перекомпилировать как написано здесь
Установка Qt в VS2010
сижу вот жду когда закончиться, ночью на это ушло часа три где то, но вылезло парочка ошибок. На всякий пожарный решил перекомпилить.
А в консоль ничего не выводилось, как будто и ошибок то нет. Открывается мое окошечко с текст эдитом и кнопкой, пишется в текст эдите один раз то что я вызвал в конструкторе слот
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  


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


Что это вообще обозначает? Что он не может найти библиотеку в патче или рядом с ехе? но в папке 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... какая то такая тоже там есть. Все проги написанные на креаторе запускаются без проблем.

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

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

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


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




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