我需要创建窗口,它始终保持在顶部,没有边框和控件.所以我这样做了:
MainWindow window;
window.show();
Run Code Online (Sandbox Code Playgroud)
MainWindow类看起来像这样:
MainWindow::MainWindow(QWidget *parent) : QWidget(parent,
Qt::Window | Qt::WindowStaysOnTopHint
| Qt::X11BypassWindowManagerHint | Qt::FramelessWindowHint) {
}
void MainWindow::keyPressEvent(QKeyEvent *event){
if(event->key() == Qt::Key_Escape){
QApplication::exit();
} else
QWidget::keyPressEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
哪个有效,但不完美.程序启动后,窗口没有焦点,所以你必须先点击它.如果我删除Qt::X11BypassWindowManagerHint,窗口获得焦点,但不会显示在所有工作区(桌面).
问题1:什么是Qt::X11BypassWindowManagerHint真正做到?
问题2:我如何使这个工作?
所以我设法挖掘了文档.
问题1: Qt::X11BypassWindowManagerHint窗口中没有边框的结果,根本没有窗口管理器的控制(仅在X11!).
问题2:要获得焦点并启用键盘输入,需要调用QWidget::activateWindow().
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |