Russian Qt Forum

Qt => Общие вопросы => Тема начата: kdm от Март 27, 2011, 19:34



Название: Виджеты в плагинах для Qt-приложения
Отправлено: kdm от Март 27, 2011, 19:34
Пытаюсь сделать чтобы в плагине при запуске нужного метода показывалось окно немодальное.
Создал форму, наследованную от QWidget и показываю ее в методе плагина
Код:
QString UpCasePlugIn :: processtext(const QString &message, QWidget* parent)
{
    Form* frm = new Form(parent);
    frm->show();
    QMessageBox::information(parent, "information", "text");
    return "asdasdasd";
}
Форма просто содержит кнопки. Но когда я вызываю метод, то кнопки показываются просто внутри родительского виджета, т.е. без окна, а так как-будто бы я их добавил вне лейаута к главному окну. В тоже время месседжбокс пока показывается нормально. В чем может быть проблемма? Пробовал также showNormal, тоже также.


Название: Re: Виджеты в плагинах для Qt-приложения
Отправлено: Denjs от Март 27, 2011, 23:39
Очевидно, "проблема" в том, что
Цитировать
Form(parent)
Если у виджета - родитель - другой виджет, то он рисуется как его часть.

имхо, не надо назначать родителя. Или играйтесь со свойствами/типами виджета (диалоговое окно, сервисное  и т.п. - где-то оно определяется)... сейчас не помню где...
но все-же мне кажется, с отсутствием родителя - вернее.


Название: Re: Виджеты в плагинах для Qt-приложения
Отправлено: vunder от Март 28, 2011, 09:29
Если не назначить владельца, то это будет отдельное окно, отдельный элемент на панеле задач. Лучше копать в сторону свойств окна, как советует Denjs. Как вариант - создавать форму как наследника от QDialog, а не от QWidget


Название: Re: Виджеты в плагинах для Qt-приложения
Отправлено: Denjs от Март 29, 2011, 14:13
Если не назначить владельца, то это будет отдельное окно, отдельный элемент на панеле задач. Лучше копать в сторону свойств окна, как советует Denjs. Как вариант - создавать форму как наследника от QDialog, а не от QWidget
Вот в свойствах как как раз и можно подобрать тип окна, которое не будет висеть на панели задач "как отдельная кнопка". По крайней мере что-нибудьтам типа tool window или типа того. У меня получалось. А родитель для отдельного окна по моему все таки должен быть пустой...