簡體   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