crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> QApplication::quit() не срабатывает?
LE0N
  опции профиля:
сообщение 12.3.2009, 22:17
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


Нет. Работы после МНОГО. В том числе и работа с формами.
Блин. До таких вот решений я и сам додуматься могу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 12.3.2009, 22:21
Сообщение #12


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

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

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




Репутация:   44  


Цитата(LE0N @ 12.3.2009, 22:17) *
Нет. Работы после МНОГО. В том числе и работа с формами.
Блин. До таких вот решений я и сам додуматься могу.

Ээээ... не понял сообщения. ;)
Что-то не так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 12.3.2009, 22:30
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


Цитата
return;
}

// Дальнейшая работа

После лоадинга, у меня появляются формы. АЛГОРИТМ НЕ ЛИНЕЙНЫЙ!
Давайте перейдём от первоначального вопроса к
Цитата
запустить loader->process после a.exec без участия пользователя...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 12.3.2009, 22:35
Сообщение #14


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

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

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




Репутация:   44  


Цитата(LE0N @ 12.3.2009, 22:30) *
Давайте перейдём от первоначального вопроса к
Цитата
запустить loader->process после a.exec без участия пользователя...



В конструкторе Loader:
QTimer::singleShot( 0, this, SLOT( process() ) );

Таймер сработает сразу после запуска цикла обработки событий.
process() - должен быть слотом.

Да, из main вызов process убрать.

Сообщение отредактировал BRE - 12.3.2009, 22:36
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 12.3.2009, 23:20
Сообщение #15


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

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Я вот чего понять не могу. Если класс с проверкой настроек спецом вынесен отдельно от класса главного окна, чтобы ускорить загрузку программы и программа не делала лишних телодвижений по инициализации элементов управления, перевода текста и т.д. То нафига eventloop (.exec()) ? Тут либо возвращать true/false из метода и делать return из main'a, если далеко возвращаться, то exit(). Как так он может не работать?

Иначе использовать трюк как в example torrent, в конструкторе окна поместить в очередь эвентов вызов своего метода. Он вызовется ровно тогда, когда будет вызван exec():

QMetaObject::invokeMethod(this, "loadSettings", Qt::QueuedConnection);


Даже сам Designer не гнушается:

    if (QLibraryInfo::licensedProducts() == QLatin1String("Console")) {
        QMessageBox::information(0, tr("Qt Designer"),
                tr("This application cannot be used for the Console edition of Qt"));
        QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection);
        return;
    }


void QDesignerToolWindow::closeEvent(QCloseEvent *ev)
{
    if (m_saveSettings) {
        ev->setAccepted(workbench()->handleClose());
        if (ev->isAccepted() && qDesigner->mainWindow() == this)
            QMetaObject::invokeMethod(qDesigner, "quit", Qt::QueuedConnection);  // We're going down!
    } else {
        QMainWindow::closeEvent(ev);
    }
}


P.S.: плохо то, что если сделать show окну, то оно появляется на мгновение, а потом идет выход из программы.

Сообщение отредактировал SABROG - 13.3.2009, 0:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 13.3.2009, 0:38
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


Цитата(SABROG @ 13.3.2009, 2:20) *
Я вот чего понять не могу. Если класс с проверкой настроек спецом вынесен отдельно от класса главного окна, чтобы ускорить загрузку программы и программа не делала лишних телодвижений по инициализации элементов управления, перевода текста и т.д. То нафига eventloop (.exec()) ? Тут либо возвращать true/false из метода и делать return из main'a, если далеко возвращаться, то exit(). Как так он может не работать?

У меня класс настроек системы не вынесен ЗА программу.
Вообще, по задуме, у меня имеется окно Loader в котором есть прогресс бар и прочая байда. Работаю с удалённой базой данных Mysql.
Сначала получаю настройки, потом пользователей. И прочую нужную мне в работе байду. Лоадер всё это отображает и весь процесс виден в этом самом окне. Когда загружаю всё, что мне нужно - показываю главное окно...
Вот и вся система...
А на данный момент делал окно, которое при вызове статического метода, показывает окошко с ошибкой. После закрытия которого - закрывается вся программа.
Спасибо BRE, показал способ, как это сделать. Теперь QApplication::exit работает...

Блин...Дайте мне возможность редактировать :)
Вот сейчас после пива пришёл, и вместо quote, code написал сгоряча))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2009, 15:21
Сообщение #17


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

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

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




Репутация:   94  


Цитата(LE0N @ 13.3.2009, 3:38) *
Блин...Дайте мне возможность редактировать
Вот сейчас после пива пришёл, и вместо quote, code написал сгоряча))
по набору 20 сообщений автоматом появится

А для цитирования есть отдельная кнопка, см. справку, тогда и в рукопашную набирать ненадо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 13.3.2009, 15:39
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


Да я знаю, что есть. Иногда мне проще вручную набрать :)))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AlexRass
  опции профиля:
сообщение 16.3.2009, 19:34
Сообщение #19


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 13.3.2009
Пользователь №: 613

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




Репутация:   0  


Добавь свой сигнал и эмитируй где тебе надо. Соедини его со слотом close(). Должно работать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 25.4.2024, 21:49