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);
我有这个代码:
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);