QInputDialog居中屏幕或居中对话框

QInputDialog center screen or center dialog

我有这个代码:

QString text = QInputDialog::getText(this, tr("Key:"), tr("Key:"), QLineEdit::Password, "", &ok);

我无法让这个对话框出现在屏幕中央,我通过 WindowFlags 并尝试将 QInputDialog 初始化为变量,调用移动然后调用 getText,确保它不会可以工作,因为 window 尚未初始化尚未移动。我不想在调用 getText 后创建另一个 thread/timer 来移动它,这不是个好主意。

有什么想法吗?

它不会工作,因为当你使用 QInputDialog 作为变量时,你不应该再使用 static 方法。所以你需要类似下一个代码的东西,它等同于静态方法,因为调用 exec() (默认情况下是模态对话框)。对我来说正常工作:

QString mText;
QInputDialog *inp = new QInputDialog(this);
inp->setLabelText(tr("Key:"));
inp->setWindowTitle(tr("Key:"));
inp->setTextEchoMode(QLineEdit::Password);
inp->adjustSize();
inp->move(QApplication::desktop()->screen()->rect().center() - inp->rect().center());
if(inp->exec() == QDialog::Accepted)
    mText = inp->textValue();
qDebug() << mText;

居中对话框的可能代码:

QSize screenSize = QApplication::desktop()->geometry().size();
int primaryScreenWidth = screenSize.width();
int primaryScreeHeight= screenSize.height();
int widgetWidth = inp->width();
int widgetHeight= inp->height();
inp->move(primaryScreenWidth/2 - widgetWidth/2, primaryScreeHeight/2 - widgetHeight/2);