DtkGui
DTK Gui module
载入中...
搜索中...
未找到
Dtk::Gui::DForeignWindow类 参考

一个用于获取本地窗口信息的类. 更多...

类 Dtk::Gui::DForeignWindow 继承关系图:
Dtk::Gui::DForeignWindow 的协作图:

信号

void wmClassChanged ()
 信号会在 wmClass 属性改变时被发送.
 
void pidChanged ()
 信号会在 pid 属性的值改变时被发送.
 

Public 成员函数

 DForeignWindow (QWindow *parent=0)
 直接构造一个 DForeignWindow 对象和使用 QWindow 对象没有区别.
 
QString wmClass () const
 
quint32 pid () const
 

静态 Public 成员函数

static DForeignWindowfromWinId (WId id)
 DForeignWindow::fromWinId. 使用这个窗口id创建一个 DForeignWindow 对象,此对象不会被加到 QGuiApplication::allWindows 中。一般应用在需要获取一个本地窗口信息的场景。示例:
 

Protected 成员函数

bool event (QEvent *) Q_DECL_OVERRIDE
 

属性

QString wmClass
 窗口 WM_CLASS 的值
 
quint32 pid
 窗口所属进程的 pid
 

详细描述

一个用于获取本地窗口信息的类.

\inmodule dtkgui

继承于 QWindow,支持 QWindow::geometry QWindow::x QWindow::y QWindow::width QWindow::height QWindow::title QWindow::flags QWindow::visibility QWindow::type QWindow::windowStates QWindow::windowState 等接口的使用,另外扩展 增加了一部分接口,方面更加详细的获取窗口信息。依赖于 dxcb 插件,在未加载 dxcb 插件的应用中使用时结果未知

参见
DWindowManagerHelper::currentWorkspaceWindows
Dtk::Widget::DApplication::loadDXcbPlugin
Dtk::Widget::DApplication::isDXcbPlatform

构造及析构函数说明

◆ DForeignWindow()

Dtk::Gui::DForeignWindow::DForeignWindow ( QWindow *  parent = 0)
explicit

直接构造一个 DForeignWindow 对象和使用 QWindow 对象没有区别.

parent

参见
DForeignWindow::fromWinId

成员函数说明

◆ fromWinId()

DForeignWindow * Dtk::Gui::DForeignWindow::fromWinId ( WId  id)
static

DForeignWindow::fromWinId. 使用这个窗口id创建一个 DForeignWindow 对象,此对象不会被加到 QGuiApplication::allWindows 中。一般应用在需要获取一个本地窗口信息的场景。示例:

// a.cpp
int main(int argc, char *argv[])
{
DApplication a(argc, argv);
QWidget w;
w.setWindowTitle("deepin");
w.show();
QFile app_win_id("/tmp/window_id.txt");
if (app_win_id.open(QFile::WriteOnly)) {
app_win_id.write(QByteArray::number(w.winId()));
app_win_id.close();
}
return a.exec();
}
// b.cpp
int main(int argc, char *argv[])
{
DApplication::loadDXcbPlugin();
DApplication a(argc, argv);
DForeignWindow *fw = nullptr;
QFile app_win_id("/tmp/window_id.txt");
if (app_win_id.open(QFile::ReadOnly)) {
fw = DForeignWindow::fromWinId(app_win_id.readAll().toInt());
}
if (fw) {
qDebug() << fw->title();
fw->connect(fw, &DForeignWindow::widthChanged, [&] {
qDebug() << fw->width();
});
}
return a.exec();
}
一个用于获取本地窗口信息的类.
Definition dforeignwindow.h:17
static DForeignWindow * fromWinId(WId id)
DForeignWindow::fromWinId. 使用这个窗口id创建一个 DForeignWindow 对象,此对象不会被加到 QGuiApplication::allWindows 中。一般应用...
Definition dforeignwindow.cpp:149

先启动应用 a 再启动应用 b

在应用 b 启动后将看到如下输出:

"deepin"

当改变应用 a 中的窗口宽度时,在应用 b 中会看到宽度的输出 id

返回
警告
不要尝试对由本应用创建的窗口调用此接口,可能会导致窗口行为发生不可逆转的变化

◆ pidChanged

void Dtk::Gui::DForeignWindow::pidChanged ( )
signal

信号会在 pid 属性的值改变时被发送.

参见
DForeignWindow::pid

◆ wmClassChanged

void Dtk::Gui::DForeignWindow::wmClassChanged ( )
signal

信号会在 wmClass 属性改变时被发送.

参见
DForeignWindow::wmClass

属性说明

◆ pid

Dtk::Gui::DForeignWindow::pid
read

窗口所属进程的 pid

注解
只读 {https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html}{_NET_WM_PID}

◆ wmClass

Dtk::Gui::DForeignWindow::wmClass
read

窗口 WM_CLASS 的值

注解
只读 {https://tronche.com/gui/x/icccm/sec-4.html#WM_CLASS}{WM_CLASS}

该类的文档由以下文件生成: