Как мой класс Dialog может узнать, какой элемент MainWindow вызвал его - PullRequest
0 голосов
/ 05 июля 2019

Я работаю с QT-Creator 4.9.1 на основе Qt 5.12.3 и делаю графический интерфейс для сенсорного терминала.У меня есть сложенный виджет с несколькими виджетами LineEdit внутри на разных страницах.У меня проблема в том, что мой текст с клавиатуры должен отображаться внутри LineEdit моего главного окна.

Вопрос:

Как определить, какой LineEdit вызвал мою сенсорную клавиатуру и как я могу вставитьнажата клавиша внутри моего LineEdit в главном окне, когда диалоговое окно сенсорной панели модальное?

Диалоговое окно сенсорной клавиатуры:

enter image description here

Пример для одной страницы Stackwidget:

enter image description here

1 Ответ

1 голос
/ 05 июля 2019

при создании QLineEdit вам нужно установить ID, например,

#include <QLineEdit>
class MyLineEdit : public QLineEdit
{
    Q_OBJECT      
public:
    MyLineEdit(int id = 0, QWidget* parent = nullptr);  
    int id() const;

private: 
    int m_id;   
};


MyLineEdit::MyLineEdit(int id, QWidget *parent)
    :QLineEdit (parent)
    ,m_id(id)
{   
}

int MyLineEdit::id() const
{
    return m_id;
}

, после этого в слоте вы можете узнать через id, какой из QLineEdit дал сигнал

connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot(const QString &)));

или такжеиспользуйте лямбда-выражение

connect(myLineEdit, &QLineEdit::textChanged,[this](const QString & txt){

   // Touch-Keyboard Dialog 

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...