Russian Qt Forum

Qt => ActiveX => Тема начата: sy от Май 27, 2010, 13:57



Название: Как сделать QDialog модальным?
Отправлено: sy от Май 27, 2010, 13:57
Проблема такая. Пишу я COM-сервер... У него вызывается слот MyFoo(IDispatch *Env)
Из Env я могу узнать win_api-хэндл основного окна программы, вызвавшей MyFoo.
Внутри MyFoo я создаю диалог:
Код:
        Ui::SearchReadDlg ui;
        QDialog* dlg = new QDialog();
        ui.setupUi(dlg);
        dlg->exec();

Как сделать так, чтобы этот диалог был parent от вызвавшей программы  ???


Название: Re: Как сделать QDialog модальным?
Отправлено: KuZ от Май 27, 2010, 19:36
Код:
QDialog* dlg = new QDialog(parent);
dlg.setModal(true);
Qt Assistant в помощь.


Название: Re: Как сделать QDialog модальным?
Отправлено: sy от Май 28, 2010, 11:41
Так ведь вся проблема в том, что QDialog в качастве parent принимает только QWidget*, а у меня есть только хэндл виндового окна HWND.
Отыскал вот такой вариант:
Код:
        QWidget *parent = new QWidget();
        SetParent(parent->winId() , iHWND);
        QDialog* dlg = new QDialog(parent);
SetParent - win api функция. Только работает как-то глючно...
Вот еще кое-чего есть: http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Windows/qtwinmigrate
Попробую использовать...