我的Dialog类如何知道MainWindow的哪个元素调用了它

时间:2019-07-05 08:13:58

标签: qt

我使用基于Qt 5.12.3的QT-Creator 4.9.1,正在为触摸终端制作GUI。我有一个堆叠的小部件,在不同页面上有多个LineEdit小部件。我的问题是,键盘输入的文本应显示在MainWindow的LineEdit内。

问题:

当触摸键盘对话框是模式对话框时,如何确定哪个LineEdit称为触摸键盘,以及如何在LineEdit中将按下的键插入MainWindow中?

触摸键盘对话框:

enter image description here

一个Stackwidget页面的示例:

enter image description here

1 个答案:

答案 0 :(得分:1)

创建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 &)));

或也使用lambda表达式

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

   // Touch-Keyboard Dialog 

});