2015-07-21 3 views
0

Я разрабатываю приложение в QT 4.7.3. Это приложение вызывается из Matlab (Simulink) с использованием mexFunction (* .mexw32)Сбой команды QT exec()

Когда я пытаюсь открыть диалоговое окно с помощью dialog.exec() команды, отображается форма, но я получаю «не отвечать на запросы приложение " мгновенно. После этого происходит сбой Matlab.

Если я попытаюсь открыть диалог, используя команду dialog.show(), она отлично работает.

Я действительно понятия не имею, о что происходит, так как обе команды так или иначе похожи, так как described here

Кто-нибудь знает, что происходит?

ответ

1

dialog.exec() вращает локальный цикл событий, который не хорошо интегрируется с тем, который сам Матлаб вращается. Таким образом, авария. И наоборот, вы делаете ставку на Matlab, делая правильные вещи, поскольку его собственный цикл событий совместим с требованиями Qt. Это не относится ко всем платформам, к сожалению, хотя в Windows это работает.

Вы никогда не должны использовать exec() за пределами main в любом случае.

+0

Какие у меня варианты, так как мне нужно ждать ввода пользователем? – guilhermecgs

+1

Ожидание не имеет места в современном асинхронном пользовательском интерфейсе. Подключитесь к принятым или отклоненным сигналам диалога, чтобы запустить ваш слот/функтор, когда диалог принят или отклонен. –

+0

Просто для подтверждения: я не могу использовать что-то вроде этого QMessageBox :: question (...). Это верно? Странно, что этот почтовый ящик работает на компьютере моего коллеги, но сбой у меня, причем оба работают с одним и тем же аппаратным/программным обеспечением – guilhermecgs

Смежные вопросы