crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> надо отследить завершение работы конструктора, как лучше поступить?
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 18:50
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


мне в глову ничего неприходит путнего кроме как создать соответсвующие сигнал и слот, соеденить сигнал в конструкторе, а послать его в самом конце конструктора.

А если бы не было Qt как бы это можно было реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 3.5.2008, 21:28
Сообщение #2


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 3.5.2008, 19:50) *
мне в глову ничего неприходит путнего кроме как создать соответсвующие сигнал и слот, соеденить сигнал в конструкторе, а послать его в самом конце конструктора.

А если бы не было Qt как бы это можно было реализовать?

Соответствующие сигнал и слот, это какие? Интересно, может быть, где-то и мне пригодится!!! Какие сигналы и слоты?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 21:35
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


я имел в виду самописаные, но это неправильная мысль была. Собственно мне нужно было чтобы окно программы появилось, а затем выполнялись какие либо действия. Соходив покурить я пришел к такому варианту: делаю функцию MyWindow::foo()
а в майне так:
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);

    MyWindow mainWin;
    mainWin.show();
    mainWin.foo();
    return app.exec();
}

Правда еще не пробывал, но я думаю это то что надо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 3.5.2008, 22:10
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


1. Кто должен отслеживать его завершение?
2. Объясни, для чего тебе это нужно?

Просто не совсем понимаю, для чего тебе это нуно и в чем собственно проблема. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 22:27
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Litkevich Yuriy @ 4.5.2008, 1:35) *
Собственно мне нужно было чтобы окно программы появилось, а затем выполнялись какие либо действия.

Вот для этого.
Например, при запуске программы нужно проверить, соединение с БД, если с ним какие-то проблемы сообщить пользователю.
Но мне как пользователю не нравится поведение некоторых программ, когда сначало выскакивает сообщение об ошибке, или лишь после его принятия появляется окно приложения. Я хочу чтобы появилось окно приложения и потом, если есть ошибки, сообщение показывать. Но нужно сделать это сразу после появления окна.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 3.5.2008, 22:54
Сообщение #6


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 3.5.2008, 22:35) *
я имел в виду самописаные, но это неправильная мысль была. Собственно мне нужно было чтобы окно программы появилось, а затем выполнялись какие либо действия. Соходив покурить я пришел к такому варианту: делаю функцию MyWindow::foo()
а в майне так:

Правда еще не пробывал, но я думаю это то что надо.

ну я туплю, конечно! НО я не понял метода. Можно все-таки обяснить, за счет чего эта функция будет отслеживать окончания действия конструктора?
Сразу такой вопрос: а можно ли отследить срабатывание любого конструктора? Если можно, то как?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 23:07
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(AD @ 4.5.2008, 2:54) *
за счет чего эта функция будет отслеживать окончания действия конструктора?

в данном случае это не обязательно, сначало отработет конструктор (MyWindow mainWin;), затем отобразится окно (mainWin.show();), это то чего я жду, ну а потом запустится моя функция (mainWin.foo();).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 4.5.2008, 8:09
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


В твоем случае нужно создавать подключение к БД, после того, как появится окно, и конструктор тут как я понимаю не причем.
Примерно так:
bool YouClass::event( QEvent *pEvent)
{
    if( pEvent->type() == QEvent::ShowToParent)
        QMessageBox::information( this, "show event", "show event");

    return QWidget::event( pEvent);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.5.2008, 11:37
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


да, вот этот вариант мне нравится, спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 2.12.2024, 15:57