如何在另一个类B中使用来自类a的qlineEdit输入?

How do I use a qlineEdit input from one class A in another class B?

本文关键字:qlineEdit 输入 另一个      更新时间:2023-10-16

我是QT和c++的新手,最近我在QT5.7上写一个程序,我有三个类,让我们说a,B和C,并且都有各自的ui.file,h。文件和cpp。我在ui中声明了一个QLineEdit。文件A,类A,现在我想使用用户在类b中键入的输入

我已经尝试在类B中声明类A,并在cpp文件中,但它似乎不起作用!任何帮助都会很感激。提前感谢!!

一种方法是将QLineEdittextChanged()信号连接到class B的一个插槽。这样你就可以不断得到b类QLineEdit的变化。

// A.cpp
A::A(B *b, QWidget *parent) : 
    QWidget(parent)
{
   // suppose object name of your QLineEdit is 'lineEdit'
   connect(ui->lineEdit, SIGNAL(textChanged(QString)),
           b, SLOT(TextChanged(QString)));
}
// B.h
class B
{
   Q_OBJECT
public:
   B();
public slots:
   void TextChanged(QString text);
private:
   QString m_text;
}
// B.cpp
void B::TextChagned(QString text)
{
   m_text = text;
}

或者另一种方法是在类a中编写一个方法来获取QLineEdit的文本。

// A.cpp
QString A::GetText()
{
   return ui->lineEdit->text();
}

1)可以将类A传递给处理QLineEdit的类B方法:

Class A
{
    public:
        QLineEdit line;
}
class B
{
    public:
        void getText(const A &a) { a.line.text(); }
}
或者,你可以从A继承B:
class B : public A
{
    public:
        void getText() { line.text(); }
}

还有第三种方法,您可以将a传递给B的构造函数,但与第一种方法类似(除了您不必将a传递给B的所有方法)