Russian Qt Forum
Май 02, 2024, 04:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: немодальные диалоги в qt требуется помощь  (Прочитано 6280 раз)
uckpeHHeBauu
Гость
« : Октябрь 12, 2005, 10:45 »

есть основная форма MainForm из нее вызывается SecondForm
требуется выполнить слот по сигналу (нажатию кнопки) из SecondForm в MainForm.

просто не знаю как подступиться ()






просьба не бить ногами а помочь, очень надо
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Октябрь 12, 2005, 17:00 »

Честно говоря, не понял, в чем проблема? Делаешь слот в MainForm и коннектишь его в конструкторе к сигналу Clicked кнопки...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
uckpeHHeBauu
Гость
« Ответ #2 : Октябрь 12, 2005, 17:10 »

Цитата: "Racheengel"
Честно говоря, не понял, в чем проблема? Делаешь слот в MainForm и коннектишь его в конструкторе к сигналу Clicked кнопки...


мне нужно вызвать слот из SecondForm (сам слот принадлежит MainForm)

т.е.

есть MainForm

MainForm::viewForm()
{
SecondForm * seco = seco (this);
seco.exec();
}

MainForm::addConst()
{
QInt a;

a=1;
}

и есть форма SecondForm

SecondForm::changeConst()
{
//Вот здесь надо как то вызвать addConst()
//и передать ей значение переменной, на край хотя бы как вызвать ?
}

HELP HELP ну очень надо
Записан
lepsai
Гость
« Ответ #3 : Октябрь 12, 2005, 17:26 »

MainForm::addConst(const int & myConst)
{
    do it
}

SecondForm::changeConst()
{
MainFr * pParent = dynamic_cast<MainForm*>(parentWidget());
if(pParent)
pParent->addConst(number);
}
Записан
uckpeHHeBauu
Гость
« Ответ #4 : Октябрь 12, 2005, 17:32 »

lepsai Спасибо !
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Октябрь 13, 2005, 09:36 »

Понятно, но я обычно по другому делаю. Т.к. MainForm у нас один Улыбающийся я указатель на него делаю как статическая переменная и экспортирую куда угодно... и строчки типа dynamic_cast<MainForm*>(parentWidget());
не нужны нафиг тогда...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
uckpeHHeBauu
Гость
« Ответ #6 : Октябрь 13, 2005, 10:12 »

Цитата: "Racheengel"
Понятно, но я обычно по другому делаю. Т.к. MainForm у нас один Улыбающийся я указатель на него делаю как статическая переменная и экспортирую куда угодно... и строчки типа dynamic_cast<MainForm*>(parentWidget());
не нужны нафиг тогда...


А можно поподробнее на эту тему ? Или ссылочку на операторы дать ?
Записан
crocus
Гость
« Ответ #7 : Октябрь 14, 2005, 05:41 »

Может поможет
this-это MainWindow,
myClass-потомок QWidget
Это из класса

connect(myClass, SIGNAL(exec(const QString &)), this, SLOT(on_find(const QString &)));
  А это в класс  
connect(this, SIGNAL(Abon(const QString &, const QString &, const QString &,
                              const QString &, const QString &)), myClass, SLOT(currentAbonChanged(const QString &, const QString &, const QString &, const QString &, const QString &)));
 в вызываемом классе  при нажатии кнопки сигнал                        
emit exec(Quer); где Quer- QString уже получивший значение
Записан
Dair
Гость
« Ответ #8 : Октябрь 17, 2005, 07:58 »

Цитата: "lepsai"
SecondForm::changeConst()
{
MainFr * pParent = dynamic_cast<MainForm*>(parentWidget());
if(pParent)
pParent->addConst(number);
}


Да, сработает, но imho совершенно не "прозрачно".

Qt-way, как мне видится, как crocus написал. Ну, или примерно так.

(объявления пропускаю за очевидностью)
Код:

MainForm::MainForm( QWidget * parent, const char * name )
  : QWidget( parent, name )
{
  secondForm = new SecondForm( this );
  connect( secondForm, SIGNAL( changeConst( QInt ) ), this, SIGNAL( addConst( QInt ) ) );
}

...

SecondForm::SecondForm( QWidget * parent, const char * name )
  : QWidget( parent, name )
{
  connect( myBytton, SIGNAL( clicked() ), this, SLOT( myButtonClicked() ) );
  ...
}

void SecondForm::myButtonClicked()
{
  QInt i = 2;
  emit changeConst( i );
}


а? Мне кажется, более понятно, что и как происходит :-)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.