我是QT和C ++的新手,最近我在QT5.7上写了一个程序,我有三个类可以说是A,B和C,并且都有各自的ui.file,h.file和cpp .file,我在文件A,类A中的ui.file中声明了一个QLineEdit,现在我想使用用户在类B中输入的输入。
我已经尝试在类B中声明类A,并且在cpp文件中但它似乎不起作用! 任何帮助,将不胜感激。在此先感谢!!
答案 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
:
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方法)