Qt, новый объект для MainWindow, сбой приложения, как генерировать сигнал завершения () - PullRequest
0 голосов
/ 07 января 2012

В главном классе MainWindow у меня есть метод, который устанавливает setEnabled («false») для каждой кнопки, когда приложение загружается.В другом классе «Скачать» у меня есть метод, отвечающий за загрузку.Это что-то вроде if ( uRet == S_OK ), и после загрузки я хотел бы установить setEnable ("true") для каждой кнопки, но я не могу запустить метод из MainWindow в этом случае, если () "потому что я получаю" QWidget: должен создать QApplicationперед QPaintDevice ".

Как запустить метод из класса MainWindow в классе загрузки или обратиться к этим кнопкам из класса загрузки.

edit: // Мне нужно подать сигнал

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);
}

и в функции, которая загружает файлы, которые у меня есть, вот так.

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

Но ничего не происходит, что я делаю не так.

1 Ответ

0 голосов
/ 07 января 2012

Сигналы всегда объектные, а не уровня класса.Вы не подключаетесь к экземпляру «загруженного» объекта, который пытаетесь прослушивать сигналы.Тот, к которому вы подключаетесь, создается и удаляется в конструкторе MainWindow и не имеет отношения к тому, который создан во втором блоке кода.

...