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
替换为带有 qLabel
和 qButton
的 qStackedView
页面,然后相应地 hide/show 页面。
我正在尝试要求用户输入密码以访问特定部分,我的应用程序是全屏的。问题是,当 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
替换为带有 qLabel
和 qButton
的 qStackedView
页面,然后相应地 hide/show 页面。