繁体   English   中英

如何在不同的类中编写lineEdit的connect语句

[英]how to write connect statement of lineEdit in different class

我如何使信号和lineEdit插槽在另一个类中声明? LineEdit是在Peakdetechtion类中声明的,我想在Peakdetechtion中制作信号和插槽, peaksettingform怎么办?

QLineEdit必须从外部(公共或获取)进行访问,或者您必须转发您感兴趣的信号。

可访问的版本(不完整且非常脏)

class Peakdetechtion { // horrible name
public:
  QLineEdit* getLineEdit() { return m_lineEdit; } // don't do it

private:
  QLineEdit* m_lineEdit;
};

class Peaksettingform : public QObject { //horrible name
  Q_OBJECT
public:
  Peaksettingform(Peakdetechtion *p, QObject *parent = 0)
  : QObject(parent) {
    // you can do this from outside and replace 'this' with a pointer to a Peaksettingform object 
    connect(p->getLineEdit(), SIGNAL(textChanged(const QString &)), this, SLOT(handleText(const QString &))); 
}

public slots:
  void handleText(const QString &);
};

信号转发

class Peakdetechtion : public QObject { // horrible name
Q_OBJECT
public:
  Peakdetechtion() {
    m_lineEdit = new QLineEdit(); // should have a parent but i am lazy
    connect(m_lineEdit, SIGNAL(textChanged(const QString&)), this, SIGNAL(leTextChanged(const QString&)));
  }

signals:
  void leTextChanged(const QString &);

private:
  QLineEdit* m_lineEdit;
};

class Peaksettingform : public QObject { //horrible name
  Q_OBJECT
public:
  Peaksettingform(Peakdetechtion *p, QObject *parent = 0)
  : QObject(parent) {
    // you can do this from outside and replace 'this' with a pointer to a Peaksettingform object 
    connect(p, SIGNAL(leTextChanged(const QString &)), this, SLOT(handleText(const QString &))); 
}

public slots:
  void handleText(const QString &);
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM