Linux OSでqtを使用してプロジェクトを開発しています.qt Qwidgetは、他のプロセスに属するネイティブウィンドウに親を設定する必要があります。ネイティブ ウィンドウは私が削除したわけではないので、そのソースを取得して変更することはできません。
メソッドは
http://libqxt.bitbucket.org/doc/0.6/qxtwindowsystem.htmlにあります。
class NativeWindow : public QWidget {
public:
NativeWindow(WId wid) {
QWidget::create(wid, false, false); // window, initializeWindow, destroyOldWindow
}
~NativeWindow() {
QWidget::destroy(false, false); // destroyWindow, destroySubWindows
}
};
WindowList windows = QxtWindowSystem::windows();
QStringList titles = QxtWindowSystem::windowTitles();
bool ok = false;
QString title = QInputDialog::getItem(0, "Choose Window", "Choose a window to be hid:", titles, 0, false, &ok);
if (ok)
{
int index = titles.indexOf(title);
if (index != -1)
{
NativeWindow window(windows.at(index));
window.hide();
}
}
注:
基礎となるウィンドウ システムでは、他のプロセスに属するウィンドウの状態を変更できる場合とできない場合があります。
このようにすると、例外としてエラーが表示されます。
X Error: BadWindow (invalid Window parameter) 3
Major opcode :3(X_GetWindowAttributes)
Resource id: 0x805cff4
では、ウィンドウ システムを使用して、Linux の他のプロセスに属するウィンドウの状態を変更できるようにするにはどうすればよいでしょうか。