我正在 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 中其他进程的窗口的状态呢?