0

在主类 MainWindow 中,当应用程序下载时,我有为每个按钮设置 setEnabled("false") 的方法。在其他类“下载”中,我有负责下载的方法。有这样的东西if ( uRet == S_OK ),下载后我想为每个按钮设置setEnable(“true”),但我不能在这个if()中从MainWindow运行方法,因为我得到“QWidget:必须在QPaintDevice之前构造一个QApplication ”。

如何从下载类中的 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);
}

在下载文件的功能中,我有这样的东西。

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

但是什么也没发生,我做错了什么。

4

1 回答 1

0

信号始终是对象而不是类级别。您没有连接到您尝试收听信号的“已下载”对象的实例。您连接的那个是在 MainWindow 构造函数中创建和删除的,与在第二个代码块中创建的那个无关。

于 2012-01-07T14:02:17.030 回答