6

Qtのスロットでビルドエラーが発生しました。パブリックスロットを持つクラスがあります:

void doSomething();

このクラスのコンストラクターでは、次のことを行います。

this->connect( ui->textFrom, SIGNAL(returnPressed()),
               this, SLOT(doSomething()) );

QLineEdit-textFromオブジェクトがあります。ビルドエラーは

../moc_mainwindow.cpp:66: undefined reference to `MainWindow::doSomething()'

:-1:エラー:collect2:ldが1つの終了ステータスを返しました

お願い助けて (:

4

3 に答える 3

16

void doSomething(); ヘッダーファイルからの抜粋のように見えますが、スロット自体を実装しましたか?

于 2009-07-15T20:03:29.263 に答える
1

構文に関する簡単な注意:通常はどちらかを使用します

connect(from, SIGNAL(sig()), to, SLOT(slot()));

これは基本的に同等です

QObject::connect(from, SIGNAL(sig()), to, SLOT(slot()));

QObject内以外の場所から呼び出している場合は、これを実行します。
この構文の間:

to->connect(from, SIGNAL(sig()), SLOT(slot()));

また、合理的です。しかし、この構文:

to->connect(from, SIGNAL(sig()), to, SLOT(slot()));

混乱を招き、コードを複製します。

于 2009-07-15T20:17:40.887 に答える
0

Qtビルドでも同じエラーが発生していました。

Qprocessから終了したシグナル用のスロットを追加していました-ドコには次のように書かれています:

void QProcess::finished(int exitCode, QProcess::ExitStatus exitStatus)

私のコード:

freesound.h

void slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus);

freensound.cpp

 m_previewProcess = new(Qprocess);
 connect (m_previewProcess ,SIGNAL (finished(int , QProcess::ExitStatus )),this,SLOT(slotPreviewFinished(int , QProcess::ExitStatus)));

 void slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus)
{
     qDebug()<<"// slotPreviewFinished: "<<exitCode;
}

上記で生成されたコンパイル:/home/ttguy/kdenlive/kdenlive_git/build-kdenlive-Desktop-Default/src/moc_freesound.cpp:121:エラー: `FreeSound :: slotPreviewFinished(int、QProcess :: ExitStatus)'への未定義の参照

そして修正は、slotPreviewFinishedの実装の前にFreeSoundを付けることでした::

void FreeSound::slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus)
{
     qDebug()<<"// slotPreviewFinished: "<<exitCode;
}
于 2015-11-26T06:05:01.253 に答える