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

时间:2016-10-15 15:20:15

标签: c++ qt

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

我已经尝试在类B中声明类A,并且在cpp文件中但它似乎不起作用! 任何帮助,将不胜感激。在此先感谢!!

2 个答案:

答案 0 :(得分:1)

一种方法是将textChanged()的{​​{1}}信号连接到QLineEdit的其中一个广告位。这样,您将继续在B类中获得class B的更改。

QLineEdit

或者另一种方法是在A类中编写一个方法来获取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;
}

答案 1 :(得分:0)

1)您可以将A类传递给处理QLineEdit

的B类方法
Class A
{
    public:
        QLineEdit line;
}
class B
{
    public:
        void getText(const A &a) { a.line.text(); }
}

2)或者,您可以从A:

继承B.
class B : public A
{
    public:
        void getText() { line.text(); }
}

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