Я получаю ввод пользователя с QInputDialog.getMultilineText(...)
. Он имеет кнопки Ok
и Cancel
, и я хочу, чтобы QInputDialog закрывал и возвращал введенный текст, когда пользователь нажимает Ctrl+S
(для него используется метод AFAIU, done()
). Как его реализовать?Как установить горячую клавишу для кнопки «ОК» в QInputDialog?
2
A
ответ
0
Я думаю, что невозможно достичь того, что вы хотите, используя статические методы, предоставляемые QInputDialog
. Вы не можете установить фильтр событий или что-то в этом роде. Более того, эти методы являются основными функциями удобства.
Вы должны наследовать от QInputDialog
, создать диалоговое окно самостоятельно и перезаписать keyPressEvent()
вызвать done()
при Ctrl+S
нажатии.
Например:
myinputdialog.h
#ifndef MYINPUTDIALOG_H
#define MYINPUTDIALOG_H
#include <QInputDialog>
class MyInputDialog : public QInputDialog
{
Q_OBJECT
public:
explicit MyInputDialog(QWidget *parent = 0);
void keyPressEvent(QKeyEvent *e) override;
signals:
public slots:
};
#endif // MYINPUTDIALOG_H
myinputdialog.cpp
#include "myinputdialog.h"
#include <QKeyEvent>
#include <QDebug>
MyInputDialog::MyInputDialog(QWidget *parent) : QInputDialog(parent)
{
setOptions(QInputDialog::UsePlainTextEditForTextInput);
}
void MyInputDialog::keyPressEvent(QKeyEvent *e)
{
qDebug() << Q_FUNC_INFO;
if (e->key() == Qt::Key_S
&& e->modifiers() & Qt::ControlModifier)
{
qDebug() << Q_FUNC_INFO << "CTRL + S";
done(1);
e->accept();
return;
}
e->ignore();
}
main.cpp
#include <QApplication>
#include "myinputdialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyInputDialog m;
m.show();
return a.exec();
}
Смежные вопросы
- 1. Как установить горячую клавишу для кнопки
- 2. Как установить горячую клавишу для ввода кода
- 3. Установить Горячую клавишу для ToggleButton с изображением
- 4. Как установить горячую клавишу? - ChromeDriver. Ява.
- 5. Как связать горячую клавишу
- 6. Как поменять кнопки «Отмена» и «ОК» на виджета QInputDialog?
- 7. Имитировать глобальную горячую клавишу
- 8. Как установить горячую клавишу для перемещения курсора из кавычек/скобок?
- 9. Как установить горячую клавишу по умолчанию для пользовательской команды?
- 10. MATLAB: Удалить горячую клавишу?
- 11. Как зарегистрировать пользовательскую горячую клавишу?
- 12. Поймать «двойную» горячую клавишу
- 13. Как изменить горячую клавишу eclipse?
- 14. Как установить Ctrl + Enter как горячую клавишу в SDK Mozilla?
- 15. Как создать горячую клавишу для отображения окна?
- 16. Обновить горячую клавишу в genymotion
- 17. Настроить горячую клавишу для обрушения панели
- 18. Как установить «Горячую клавишу« Первое слово »на кнопку в Javascript?
- 19. Как сделать горячую клавишу триггером кнопки Windows Forms?
- 20. 2 клавиши, объединенные в автоматическую горячую клавишу, нажав 2 кнопки
- 21. QAction ярлык не может установить пространство как горячую клавишу
- 22. Можно ли установить глобальную горячую клавишу в WinRT?
- 23. Назначить горячую клавишу для конфигурации VSCode?
- 24. создать горячую клавишу для паролей linux
- 25. Изменить горячую клавишу для выбора автозаполнения
- 26. Как установить связать горячую клавишу с моим расширением браузера Chrome?
- 27. Создать горячую клавишу для вставки кода
- 28. C# назначить горячую клавишу кнопке
- 29. настроить каждую отдельную горячую клавишу
- 30. Autohotkey. Как заставить работать как «горячую клавишу», так и «горячую клавишу + ключ»?
'QShortcut (QKeySequence (Qt.CTRL + Qt.Key_S), dlg, dlg.done)', см. Http://nullege.com/codes/show/[email protected]@[email protected]_qt-2.3.27 @ etmQt @ etmView.py/84/PyQt5.QtWidgets.QShortcut –
@VladimirBershov QInputDialog - это статический метод, вы не можете получить виджет. – eyllanesc
Использовать собственный виджет? Я не думаю, что QInputDialog * * полезен ... – peppe