Описание класса QX11EmbedContainer
|
enum | Error { Unknown, InvalidWindowID } |
QX11EmbedContainer ( QWidget * parent = 0 ) | |
~QX11EmbedContainer () | |
WId | clientWinId () const |
void | discardClient () |
void | embedClient ( WId id ) |
Error | error () const |
void | clientClosed () |
void | clientIsEmbedded () |
void | error ( QX11EmbedContainer::Error error ) |
virtual bool | event ( QEvent * event ) |
virtual void | paintEvent ( QPaintEvent * e ) |
Класс QX11EmbedContainer предоставляет виджет контейнера XEmbed.
XEmbed - это протокол X11, который поддерживает встраивание виджета из одного приложения в другое приложение.
Контейнер XEmbed - это графическое место, которое встраивает внешний клиентский виджет. Клиентский виджет - это окно, которое встраивается в контейнер.
Когда виджет встроен и контейнер получает фокус ввода, фокус ввода передаётся виджету. Когда виджет достигает окончания цепочки фокуса ввода, фокус ввода передаётся обратно в контейнер. Активация окна, акселераторы, модальность и перетаскивание (XDND) также обрабатываются.
QX11EmbedContainer обычно используется для создания панелей или панелей инструментов, в которые внедряются апплеты, или для поглощения приложений X11. При создании панели приложения один контейнерный виджет создаётся на панели инструментов и может или поглотить другой виджет при помощи embed(), или позволить виджету XEmbed встроиться в себя. Контейнерный идентификатор окна X11, получаемый с помощью winId(), должен быть известен клиентскому виджету. После встраивания идентификатор клиентского окна может быть получен при помощи clientWinId().
В следующем примере контейнерный виджет создаётся как основной виджет. Затем вызывается приложение "playmovie", которому передаётся идентификатор окна как параметр командной строки. Программа "playmovie" - это клиентский виджет XEmbed. Виджет встраивает сам себя в контейнер, используя идентификатор окна контейнера.
int main(int argc, char *argv[]) { QApplication app(argc, argv); if (app.arguments().count() != 2) { qFatal("Error - expected executable path as argument"); return 1; } QX11EmbedContainer container; container.show(); QProcess process(&container); QString executable(app.arguments()[1]); QStringList arguments; arguments << QString::number(container.winId()); process.start(executable, arguments); int status = app.exec(); process.close(); return status; }
После встраивания клиентского виджета контейнер посылает сигнал clientIsEmbedded(). Сигнал clientClosed() посылается при закрытии виджета.
Для QX11EmbedContainer вполне возможно встраивание виджетов XEmbed из отличных от Qt инструментариев, таких как GTK+. Произвольные (не XEmbed) виджеты X11 также могут быть встроены, то в этом случае будут потеряны XEmbed-специфичные особенности, такие как активация окна и обработка фокуса ввода при его потере.
Эквивалентом QX11EmbedContainer в GTK+ является GtkSocket. Соответствующий виджет KDE 3 называется QXEmbed.
Смотрите также QX11EmbedWidget и XEmbed Specification.
Константа | Значение | Описание |
---|---|---|
QX11EmbedContainer::Unknown | 0 | Произошла неопознанная ошибка. |
QX11EmbedContainer::InvalidWindowID | 2 | Идентификатор окна X11 контейнера недействителен. Эта ошибка обычно вызвана передачей неверного идентификатора окна в embed(). |
Создаёт объект QX11EmbedContainer с указанным родителем parent.
Уничтожает QX11EmbedContainer.
Этот сигнал посылается контейнером, когда клиентский виджет закрывается.
Этот сигнал посылается контейнером, после того как клиентский виджет был встроен.
Если контейнер имеет встроенный виджет, то эта функция возвращает идентификатор окна X11 клиента; в противном случае возвращается 0.
Отсоединяет клиента от того, в кого он встроен. Клиент появится как обычное окно на рабочем столе.
Указывает контейнеру встроить окно X11 с идентификатором окна id. Виджет клиента будет размещён сверху всех в окне контейнера, а его размер будет изменён так, чтобы соответствовать размерам контейнера.
Идентификатор id должен быть идентификатором окна, управляемого приложением, включающим XEmbed, но это не является обязательным. Если идентификатор id не принадлежит клиентскому виджету XEmbed, то обработка фокуса ввода, активация, акселераторы и другие особенности не будут работать должным образом.
Возвращает последнюю произошедшую ошибку.
Этот сигнал посылается, когда возникает ошибка при встраивании или взаимодействии с клиентом. Указанная ошибка error описывает возникшую проблему.
Смотрите также QX11EmbedContainer::Error.
Переопределено от QObject::event().
Переопределено от QWidget::paintEvent().
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |