我使用基于Qt 5.12.3的QT-Creator 4.9.1,正在为触摸终端制作GUI。我有一个堆叠的小部件,在不同页面上有多个LineEdit小部件。我的问题是,键盘输入的文本应显示在MainWindow的LineEdit内。
问题:
当触摸键盘对话框是模式对话框时,如何确定哪个LineEdit称为触摸键盘,以及如何在LineEdit中将按下的键插入MainWindow中?
触摸键盘对话框:
一个Stackwidget页面的示例:
答案 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
});