Qt アプリケーションに問題があります。別のクラス内からシグナルを発信しようとしています (これは、シグナルが配置されているクラスのネストされたクラスです)。
すでに信号をスロットに接続していますが、これで問題ありません。しかし、このネストされたクラス内からこのシグナルを発行しようとすると、コンパイラ エラーが発生します。
オブジェクトなしでメンバー関数を呼び出すことはできません
なにが問題ですか?Qtのドキュメントでそれを探しましたが、合理的な解決策や説明さえ見つかりませんでした。
簡略化されたクラス定義は次のようになります。
class LogWriter : public QDialog
{
Q_OBJECT
public:
class Log : public QObject
{
Q_OBJECT
public:
bool print;
Log(bool _print, QString _color, QObject *obj = NULL)
: QObject(obj)
{
print = _print;
color = _color;
}
};
LogWriter(QWidget * parent = 0);
~LogWriter();
public slots:
void setMinVal();
void setMediumVal();
void setHighVal();
void cleanWindow();
void appendText(QString &text);
signals:
void signalLogAppend(QString);
};
LOW
次の関数呼び出しを使用して、クライアント コード内の LogWriterのインスタンスのシグナルをスロットに接続します。
connect(&LOW, SIGNAL(signalLogAppend(QString)),
this, SLOT(appendText(QString&)),
Qt::DirectConnection);