メインクラス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;
}
何も起こりません、私は間違っています。
投稿したコードに矛盾があります(シグナルの宣言とシグナルの名前が同じではありません)。シグナルとスロットの名前は非常に重要なので、質問をクリーンアップし、実際のコードと一致することを確認してください。 – Mat