2012-01-07 7 views
0

メインクラスMainWindowには、アプリケーションのダウンロード時に各ボタンに対してsetEnabled( "false")を設定するメソッドがあります。他のクラス「ダウンロード」では、ダウンロードを担当するメソッドがあります。このif (uRet == S_OK)のようなsthがあり、ダウンロード後、私は各ボタンのsetEnable( "true")を使いたいと思いますが、MainWindowからメソッドを実行することはできません。if() '私が取得する "QWidget:QApplication QPaintDevice "である。Qt、MainWindow用の新しいオブジェクト、アプリケーションクラッシュ、finished()シグナルの出力方法

ダウンロードクラスのMainWindowクラスからメソッドを実行する方法、またはダウンロードクラスからこれらのボタンを参照する方法。

編集://私は信号

class downloaded : public QObject 
{ 
    Q_OBJECT 
public: 
    void test3(); 
signals: 
    void changeEnabled(); 
}; 

void downloaded::test3(){ 
    emit changeEnabled(); 

} 
class MainWindow : public QMainWindow{ 
     Q_OBJECT 

public: 
     ... 
public slots: 
     void ONchangeEnabled(); 
} 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    downloaded test_object; 

    connect(&test_object, SIGNAL(changeEnabled()), this, SLOT(ONchangeEnabled())); 

    ui->setupUi(this);   
    setupUI();     

} 

void MainWindow::ONchangeEnabled(){ 
    ui->actionDL->setEnabled(true); 
} 

と私はそのようなSTHを持つファイルをダウンロードする機能でを放出する必要があります。

downloaded obiekt; 
... 
    if (uRet == S_OK) 
     { 
      obiekt.test3(); return 0; 
     } 
     else { 
      obiekt.test3(); return 1; 
     } 

何も起こりません、私は間違っています。

+1

投稿したコードに矛盾があります(シグナルの宣言とシグナルの名前が同じではありません)。シグナルとスロットの名前は非常に重要なので、質問をクリーンアップし、実際のコードと一致することを確認してください。 – Mat

答えて

0

信号は常にオブジェクトであり、クラスレベルではありません。シグナルを待ち受けようとしている「ダウンロード済み」オブジェクトのインスタンスに接続していません。接続先はMainWindowコンストラクタで作成および削除され、2番目のコードブロックで作成されたものとの関連はありません。

+0

MainWindow以外のGUIからguiを変更するにはどうすればいいですか? – aptyp

関連する問題