1
我想要繼承QEditLine,以便我可以定義一個新的SIGNAL發送一個對象標識符。目前,我將一個父信號連接到新類中的一個插槽,並從該插槽發出一個具有附加對象標識符的適當的新信號。 我不明白一件事。問題是我不知道如何定義一個新的信號功能本身。我不知道我應該放在那裏。我的意思是我知道它的論點,但我不知道它會作爲一個函數做什麼。我這是第一次這樣做,它看起來很傻,但我真的呆在那裏>。 <。 任何人都可以提供一些線索。這可能是一個非常簡單的問題。QEditLine的子類與一個新的信號
感謝
// myqeditline.h
#ifndef MYQEDITLINE_H
#define MYQEDITLINE_H
#include <QWidget>
#include <QLineEdit>
#include <QString>
class MyQEditLine : public QLineEdit
{
Q_OBJECT
public:
explicit MyQEditLine(const QString& n, QWidget *parent = 0);
protected:
QString name;
signals:
void textChanged(QString textCHanged, QString sender);
protected slots:
public slots:
void myTextChanged(QString textChanged);
};
#endif // MYQEDITLINE_H
// myqeditline.cpp
#include "myqeditline.h"
MyQEditLine::MyQEditLine(const QString &n, QWidget *parent)
: QLineEdit(parent),name(n) {
connect(this,SIGNAL(textChanged(QString)),this,SLOT(myTextChanged(QString)));
}
void MyQEditLine::myTextChanged(QString textChanged) {
emit textChanged(QString textChanged, QString name);
}
你能解釋一下你的意思通過「自己定義一個新的信號功能」?你嘗試'發射textChanged(textChanged,名稱);' –
嗨。通過定義,我的意思是提供一個實現,{和}之間的一個函數體,就像我對SLOT和構造函數所做的一樣。 SIGNAL是否需要在myqeditline.cpp中實現? – Celdor
我想我已經明白了。 「信號是由moc自動生成的,不能在.cpp文件中實現,它們永遠不會有返回類型(即使用void)。」 http://doc.qt.nokia.com/4.7-snapshot/signalsandslots.html – Celdor