dforeignwindow_zh
2022-04-14 15:19:27

Class::DForeignWindow

暂无该属性


Detailed Description

~chinese ~chinese

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

~chinese

See also DWindowManagerHelper::currentWorkspaceWindowsDApplication::loadDXcbPluginDApplication::isDXcbPlatform

DForeignWindow::Q_PROPERTY

[private plain  ]

int Q_PROPERTY(int )

DForeignWindow::fromWinId

[private plain static ]

DForeignWindow * fromWinId(int id) ~chinese

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

// 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();
}

~chinese

// 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();
}

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

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

"deepin"

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

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

DForeignWindow::wmClass

[private plain  ]

int wmClass() const

DForeignWindow::pid

[private plain  ]

int pid() const

DForeignWindow::pidChanged

[private plain  ]

void pidChanged()

DForeignWindow::event

[protected plain  ]

bool event(int *)