Подсказки на компьютерную тематику

Можно подсмотреть, если забыли…

Как клавиатурой дублировать нажатие кнопок в приложениях на C++ в Qt на Ubuntu

Дублирование клавишами клавиатуры кнопок приложения на C++ в Qt

Возможность использования кнопок Enter и других в приложении на Ubuntu

В Qt есть возможность, вместо нажатия с помощью мышки кнопок на экране, выполнять нажатие кнопок клавиатуры. Это может понадобиться для отправки данных или получения результата операции.
Например, в графическом редакторе в файле mainwindow.ui созданы два элемента QPushButton и Qlabel, со значениями objectName соответственно pushButton и label. Требуется, вместо нажатия кнопки pushButton нажимать клавишу Enter на клавиатуре.

    Для этого надо:

  • в файл mainwindow.h добавить метод или функцию, которая должна выполняться при нажатии кнопки pushButton, например symbolSlot();
  • в class MainWindow : public QMainWindow и в раздел private slots::

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    private slots:
    void symbolSlot(); // это созданный нами слот для обращения к кнопке
    }

  • в файл mainwindow.cpp добавляем в класс MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    под строкой ui->setupUi(this); связь или connect:

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(symbolSlot())); //для работы с кнопкой
    }
  • в том же месте, просто чуть ниже строки ui->setupUi(this); добавляем к кнопке pushButton клавишу Enter через метод setShortcut()
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(symbolSlot())); //для работы с кнопкой

    ui->pushButton->setShortcut(Qt::Key_Return);//при нажатии клавиши клавиатуры Enter будет срабатывать кнопка с objectName pushButton
    }

  • в тот же файл mainwindow.cpp дописываем описание метода:
    void MainWindow::symbolSlot()
    {
    QString aaa;//создается строковая переменная aaa
    // aaa="text";//в переменную aaa помещается текст text, лучше использовать двойные кавычки
    //aaa=ui->pushButton->text();//в переменную aaa помещается текст, написанный на самой кнопке
    aaa=ui->pushButton->objectName();//в переменную aaa помещается objectName
    ui->pushButton->setText(aaa);//в надпись на кнопке вставляется текст text
    ui->label->setText(aaa);//в содержание элемента вставляется текст text
    }
  • добавив этот код, можно поэксперементировать со всеми клавишами, как абстрактными, так и с клавиатурными.

Некоторые особенности работы при использовании клавиатуры в работе с приложением на C++ в Qt на Ubuntu

    Особые моменты, которые не помешает знать о работе с клавиатурой:

  1. ранее самой популярной системой кодировки была ASCII, сейчас же распространен стандарт Unicode
  2. может получиться, что символы клавиатуры указаны для Unicode, а у пользователя подключена клавиатура устаревшей ASCII
  3. если в приложении имеется поле для ввода текста, то не все клавиши могут срабатывать, из-за того, что сигнал кнопки предназначен для выполнения какого-либо действия, а он будет направлен на ввод символа в это текстовое поле
  4. в стандартах кодировки некоторые вроде бы идентичные символы могут не совпадать и не будут срабатывать, например в ASCII используются символы * и /, а в Unicode × и ÷
  5. при нажатии клавиши клавиатуры, даже при русской раскладке покажет английский символ,
    например при нажатии кнопки V(англ.),М(рус.) покажет V

Обращение к клавишам клавиатуры

    Выбранная клавиша клавиатуры добавляется к кнопке приложения через метод кнопки, например
    ui->pushButton->setShortcut(X);, где вместо X может использоваться следующее значение клавиши клавиатуры:

  • постоянное имя, которое можно узнать в множестве Qt Namespace, например
    ui->pushButton->setShortcut(Qt::Key_Return);
  • номер этой клавиши в этом же множестве Qt Namespace, например
    ui->pushButton->setShortcut(0x01000004);

Некоторые математические знаки

    Некоторые символы в Qt обозначаются так:

  • * – Qt::Key_Asterisk
  • / – Qt::Key_Slash
  • × – Qt::Key_multiply
  • ÷ – Qt::Key_division

Как клавиатурой дублировать нажатие кнопок в приложениях на C++ в Qt на Ubuntu

Дублирование клавишами клавиатуры кнопок приложения на C++ в Qt

Возможность использования кнопок Enter и других в приложении на Ubuntu

В Qt есть возможность, вместо нажатия с помощью мышки кнопок на экране, выполнять нажатие кнопок клавиатуры. Это может понадобиться для отправки данных или получения результата операции.
Например, в графическом редакторе в файле mainwindow.ui созданы два элемента QPushButton и Qlabel, со значениями objectName соответственно pushButton и label. Требуется, вместо нажатия кнопки pushButton нажимать клавишу Enter на клавиатуре.

    Для этого надо:

  • в файл mainwindow.h добавить метод или функцию, которая должна выполняться при нажатии кнопки pushButton, например symbolSlot();
  • в class MainWindow : public QMainWindow и в раздел private slots::

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    private slots:
    void symbolSlot(); // это созданный нами слот для обращения к кнопке
    }

  • в файл mainwindow.cpp добавляем в класс MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    под строкой ui->setupUi(this); связь или connect:

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(symbolSlot())); //для работы с кнопкой
    }
  • в том же месте, просто чуть ниже строки ui->setupUi(this); добавляем к кнопке pushButton клавишу Enter через метод setShortcut()
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(symbolSlot())); //для работы с кнопкой

    ui->pushButton->setShortcut(Qt::Key_Return);//при нажатии клавиши клавиатуры Enter будет срабатывать кнопка с objectName pushButton
    }

  • в тот же файл mainwindow.cpp дописываем описание метода:
    void MainWindow::symbolSlot()
    {
    QString aaa;//создается строковая переменная aaa
    // aaa="text";//в переменную aaa помещается текст text, лучше использовать двойные кавычки
    //aaa=ui->pushButton->text();//в переменную aaa помещается текст, написанный на самой кнопке
    aaa=ui->pushButton->objectName();//в переменную aaa помещается objectName
    ui->pushButton->setText(aaa);//в надпись на кнопке вставляется текст text
    ui->label->setText(aaa);//в содержание элемента вставляется текст text
    }
  • добавив этот код, можно поэксперементировать со всеми клавишами, как абстрактными, так и с клавиатурными.

Некоторые особенности работы при использовании клавиатуры в работе с приложением на C++ в Qt на Ubuntu

    Особые моменты, которые не помешает знать о работе с клавиатурой:

  1. ранее самой популярной системой кодировки была ASCII, сейчас же распространен стандарт Unicode
  2. может получиться, что символы клавиатуры указаны для Unicode, а у пользователя подключена клавиатура устаревшей ASCII
  3. если в приложении имеется поле для ввода текста, то не все клавиши могут срабатывать, из-за того, что сигнал кнопки предназначен для выполнения какого-либо действия, а он будет направлен на ввод символа в это текстовое поле
  4. в стандартах кодировки некоторые вроде бы идентичные символы могут не совпадать и не будут срабатывать, например в ASCII используются символы * и /, а в Unicode × и ÷
  5. при нажатии клавиши клавиатуры, даже при русской раскладке покажет английский символ,
    например при нажатии кнопки V(англ.),М(рус.) покажет V

Обращение к клавишам клавиатуры

    Выбранная клавиша клавиатуры добавляется к кнопке приложения через метод кнопки, например
    ui->pushButton->setShortcut(X);, где вместо X может использоваться следующее значение клавиши клавиатуры:

  • постоянное имя, которое можно узнать в множестве Qt Namespace, например
    ui->pushButton->setShortcut(Qt::Key_Return);
  • номер этой клавиши в этом же множестве Qt Namespace, например
    ui->pushButton->setShortcut(0x01000004);

Некоторые математические знаки

    Некоторые символы в Qt обозначаются так:

  • * – Qt::Key_Asterisk
  • / – Qt::Key_Slash
  • × – Qt::Key_multiply
  • ÷ – Qt::Key_division