Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在屏幕上为窗口预留空间_C++_Linux_Qt - Fatal编程技术网

C++ 在屏幕上为窗口预留空间

C++ 在屏幕上为窗口预留空间,c++,linux,qt,C++,Linux,Qt,我正在创建桌面环境,我需要在屏幕顶部为任务栏保留空间。目前无法关闭(例如)Chromium-关闭/最大化/最小化按钮位于任务栏后面。如何在屏幕上保留空间 代码如下: #include "status_bar.h" #include "ui_status_bar.h" #include <stdlib.h> #include <QTime> #include <QTimer> #include <QApplication> #include <

我正在创建桌面环境,我需要在屏幕顶部为任务栏保留空间。目前无法关闭(例如)Chromium-关闭/最大化/最小化按钮位于任务栏后面。如何在屏幕上保留空间

代码如下:

#include "status_bar.h"
#include "ui_status_bar.h"
#include <stdlib.h>
#include <QTime>
#include <QTimer>
#include <QApplication>
#include <QDesktopWidget>
#include "menu.h"
#include "ui_menu.h"

status_bar::status_bar(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::status_bar)
{
ui->setupUi(this);
setWindowFlags(Qt::Window | Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
move(0,0);
menudialog = new QDialog(0,0);
setMinimumSize(QApplication::desktop()->width(),36);
setMaximumSize(QApplication::desktop()->width(),36);
ui->menu_switch->move(size().width()/2-ui->menu_switch->size().width(),0);
ui->time->move(QApplication::desktop()->width()-ui->time->size().width(),10);
ui->username->setText(getenv("USER"));
timeupdate = new QTimer(this);
is_menu_open=false;
connect(timeupdate, SIGNAL(timeout()),
          this, SLOT(UpdateClock()));
timeupdate->start(100);
}

void status_bar::UpdateClock()
{
    ui->time->setText(QTime::currentTime().toString("HH:mm"));
}

status_bar::~status_bar()
{
    delete ui;
}

void status_bar::on_menu_switch_clicked()
{
    if(is_menu_open) {
        menudialog->close();
        is_menu_open=false;
    } else {
       is_menu_open=true;
        Ui_menu menuui;
        menuui.setupUi(menudialog);
        menudialog->setMinimumSize(QApplication::desktop()->width(),QApplication::desktop()->height()-36);
       menudialog->setMaximumSize(QApplication::desktop()->width(),QApplication::desktop()->height()-36);
        menudialog->move(0,36);
        menudialog->setWindowFlags(Qt::Window | Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
        menudialog->show();
    }
}
#包括“status_bar.h”
#包括“ui\u status\u bar.h”
#包括
#包括
#包括
#包括
#包括
#包括“menu.h”
#包括“ui_menu.h”
状态栏::状态栏(QWidget*父项):
QMainWindow(父级),
用户界面(新用户界面::状态栏)
{
用户界面->设置用户界面(此);
setWindowFlags(Qt::Window | Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
移动(0,0);
menudialog=新的QDialog(0,0);
setMinimumSize(QApplication::desktop()->width(),36);
setMaximumSize(QApplication::desktop()->width(),36);
ui->菜单开关->移动(大小().width()/2-ui->菜单开关->大小().width(),0);
ui->time->move(QApplication::desktop()->width()-ui->time->size().width(),10);
ui->username->setText(getenv(“用户”);
timeupdate=新的QTimer(此);
菜单是否打开=错误;
连接(timeupdate,信号(timeout()),
这个,SLOT(updatelock());
时间更新->开始(100);
}
无效状态栏::UpdateLock()
{
ui->time->setText(QTime::currentTime().toString(“HH:mm”);
}
状态栏::~状态栏()
{
删除用户界面;
}
无效状态栏::在菜单上开关被点击()
{
如果(菜单是否打开){
菜单对话框->关闭();
菜单是否打开=错误;
}否则{
菜单是否打开=真;
用户界面菜单;
menuui.setupUi(menudialog);
menudialog->setMinimumSize(QApplication::desktop()->宽度(),QApplication::desktop()->高度()-36);
menudialog->setMaximumSize(QApplication::desktop()->宽度(),QApplication::desktop()->高度()-36);
菜单对话框->移动(0,36);
menudialog->setWindowFlags(Qt::Window | Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
菜单对话框->显示();
}
}

问题出在哪里?如何将窗口停靠在屏幕顶部?但不确定如何防止任务栏与其他程序窗口重叠。这些旗子对我有用。您已经指定了大多数,但Qt::CustomizeWindowint除外。试试适合你的组合。setWindowFlags(Qt::CustomizeWindowint | Qt::Tool | Qt::WindowStaysOnTopHint);红色边框不是我想要的结果。在谷歌,我找不到任何关于将窗口停靠在屏幕顶部的信息。应用程序隐藏在任务栏后面。您的窗口管理器是什么?