qInputDialog 在全屏应用程序中使 Unity 任务栏和标题栏可见

qInputDialog make visible Unity taskbar and titlebar in fullscreen application

我正在尝试要求用户输入密码以访问特定部分,我的应用程序是全屏的。问题是,当 qInputDialog 出现时,统一任务栏和应用程序标题栏也会出现。我想避免这种情况并让我的应用程序全屏显示。 我在 Ubuntu 16.04

上使用 Qt 5.12.3

看看这个简单的例子:

Main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.showFullScreen();

    return a.exec();
}

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QInputDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

void MainWindow::on_pushButton_clicked()
{
    bool ok;
    QString text = QInputDialog::getText(this, tr("Restriscted"),
                                         tr("Password:"), QLineEdit::Password,"",&ok, Qt::FramelessWindowHint);
    if (ok && text=="pass")
    {
        ui->label->setText("ok");
    }
}

目前似乎没有解决方案,问题取决于 Unity。最后,我将 qInputDialog 替换为带有 qLabelqButtonqStackedView 页面,然后相应地 hide/show 页面。