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

时间:2019-06-06 15:14:39

标签: c++ qt ubuntu-16.04 fullscreen qinputdialog

我正在尝试要求用户输入密码以访问特定部分,我的应用程序是全屏显示。问题在于,当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");
    }
}

1 个答案:

答案 0 :(得分:0)

似乎目前尚无解决方案,问题取决于Unity。最后,我用qInputDialogqStackedView上的qLabel页面替换了qButton,然后相应地隐藏/显示该页面。