У меня есть некоторый код для вызова QMessageBox
, но когда он запрашивает, я не могу переключаться между кнопками. Он застрял на кнопке по умолчанию.
Клавиши типа Escape
и Enter
работают просто отлично, но клавиши Tab
, Space
и Left
и Right
ничего не делают. Мне бы хотелось, чтобы нажатие этих клавиш переключало фокус с одной кнопки на другую или, если Space
, будет действовать как Enter
.
Я подумал, что это будет поведение по умолчанию или просто реализовать, но я его не вижу. Я бы предпочел не а) создавать свою собственную форму пользовательского интерфейса или б) создавать сложную функцию keyPressEvent, но, возможно, это то, с чем я застряну.
Используя Qt 5.3.2, использовались qt-creator 3.1.2 и 3.0.1, Ma c OS X 10.6.8.
QMessageBox msgBox;
msgBox.setWindowTitle("This is a prompt");
msgBox.setIcon(QMessageBox::Question);
msgBox.layout()->setSizeConstraint(QLayout::SetMaximumSize);
msgBox.setText(tr("This is some text"));
msgBox.setInformativeText(tr("Here is some great information for you.\n"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msgBox.setDefaultButton(QMessageBox::No);
msgBox.setBaseSize(QSize(400, 160));
msgBox.setFocusPolicy(Qt::StrongFocus);
int ret = msgBox.exec();
Я пытался использовать setFocusPolicy(Qt::StrongFocus);
, но это не помогло.
Мне удалось получить желаемый эффект от Qt 5.14.1 + qtcreator 4.10.1 на Linux, поэтому я проведу больше испытаний. Это может быть указано c для моей платформы.